[英]How to populate a GridView in a pop-up that is inside an UpdatePanel after a button click inside an UpdatePanel
我有一個具有ImageButton
的GridView
。 單擊時,它將運行查詢並從結果填充GridView
(或者它應該:
<asp:UpdatePanel runat="server" ClientIDMode="Static" ID="TasksUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ShowHeaderWhenEmpty="false" AlternatingRowStyle-BackColor="#EBE9E9" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDataText="You currently have no tasks assigned to you" OnRowDataBound="yourTasksGV_RowDataBound" OnRowCreated="yourTasksGV_RowCreated" OnRowCommand="yourTasksGV_RowCommand">
<Columns>
<asp:HyperLinkField Target="_self" DataNavigateUrlFields="Task Detail" DataTextField="Task Name" DataNavigateUrlFormatString="" HeaderText="Task Detail" SortExpression="Task Name" ItemStyle-CssClass="taskTableColumn" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ImageUrl="~/theImages/Dependencies.png" CssClass="gvTaskDep" runat="server" ID="btnShowDepend" CommandName="TaskDepend" CommandArgument='<%#Eval("Object") + "," + Eval("FK") %>' ToolTip="Click to view Dependencies" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
Object
和FK
來自填充以上GridView
的原始查詢。
后面的代碼:
protected void yourTasksGV_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "TaskDepend")
{
string[] id = e.CommandArgument.ToString().Split(',');
connString = @"";
string objectid = id[0];
string fkobjectid = id[1];
string queryStringParent =
string.Format(@"SELECT
CT.OBJECTID 'Object ID'
,LTRIM(RTRIM(CT.ATTR2739)) 'Task Name'
,UA.USERNAME 'Manager'
,CT.ATTR2941 'Task Start Date'
,LTRIM(RTRIM(CT.ATTR2812)) 'Status'
,CT.ATTR2752 'Due Date'
,CT.ATTR2757 'Completed Date'
,CT.ATTR2849 'Checked Date'
,LTRIM(RTRIM(CT.ATTR2847)) 'Checked Status'
,LTRIM(RTRIM(CT.ATTR2848)) 'Checked User'
,CT.FK2744 'Dependent Task'
FROM HSI.RMOBJECTINSTANCE1224 CT
LEFT JOIN HSI.RMOBJECTINSTANCE1232 S ON S.OBJECTID = CT.FK2940
LEFT JOIN HSI.USERACCOUNT UA ON UA.USERNUM = (S.FK2852 * -1)
WHERE CT.ACTIVESTATUS = 0 AND CT.OBJECTID = '{0}'", fkobjectid);
string queryStringChildren =
string.Format(@"SELECT
CT.OBJECTID 'Object ID'
,LTRIM(RTRIM(CT.ATTR2739)) 'Task Name'
,UA.USERNAME 'Manager'
,CT.ATTR2941 'Task Start Date'
,LTRIM(RTRIM(CT.ATTR2812)) 'Status'
,CT.ATTR2752 'Due Date'
,CT.ATTR2757 'Completed Date'
,CT.ATTR2849 'Checked Date'
,LTRIM(RTRIM(CT.ATTR2847)) 'Checked Status'
,LTRIM(RTRIM(CT.ATTR2848)) 'Checked User'
,CT.FK2744 'Dependent Task'
FROM HSI.RMOBJECTINSTANCE1224 CT
LEFT JOIN HSI.RMOBJECTINSTANCE1232 S ON S.OBJECTID = CT.FK2940
LEFT JOIN HSI.USERACCOUNT UA ON UA.USERNUM = (S.FK2852 * -1)
WHERE CT.ACTIVESTATUS = 0 AND CT.FK2744 = '{0}'", objectid);
using (SqlConnection connection = new SqlConnection(connString))
{
//Get Parent Task
SqlCommand command = new SqlCommand(queryStringParent, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
gvParentTasks.DataSource = reader; //not working
gvParentTasks.DataBind(); //not working
upParentTasks.Update(); //not working
if (!string.IsNullOrEmpty(fkobjectid) && fkobjectid != " ")
{
// Call Read before accessing data.
while (reader.Read())
{
//ddlCli.Items.Add(new System.Web.UI.WebControls.ListItem(reader[0].ToString().TrimEnd(), reader[0].ToString().TrimEnd()));
}
}
// Call Close when done reading.
reader.Close();
//Get Child Tasks
command = new SqlCommand(queryStringChildren, connection);
reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
//ddlCli.Items.Add(new System.Web.UI.WebControls.ListItem(reader[0].ToString().TrimEnd(), reader[0].ToString().TrimEnd()));
}
// Call Close when done reading.
reader.Close();
}
}
}
我有一個彈出窗口,其中包含GridView
:
<div id="popupDep">
<a id="popupDepClose" title="Close Window">x</a>
<h3>Parent Dependencies</h3>
<div id="dvFirst" class="parentGridHolder">
<asp:UpdatePanel ID="upParentTasks" runat="server" UpdateMode="Conditional" ClientIDMode="Static">
<ContentTemplate>
<asp:GridView ID="gvParentTasks" runat="server" AllowSorting="false" ShowHeaderWhenEmpty="false" AlternatingRowStyle-BackColor="#EBE9E9" AutoGenerateColumns="false" ClientIDMode="Static">
<Columns>
<asp:BoundField DataField="Task Name" HeaderText="Task Name" SortExpression="Task Name" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Due Date" HeaderText="Due" SortExpression="Due Date" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Manager" HeaderText="Manager" SortExpression="Manager" ItemStyle-CssClass="taskTableColumn" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<h3>Children Dependencies</h3>
<div id="dvSecond" class="childrenGridHolder">
<asp:UpdatePanel ID="upChildrenTasks" runat="server" UpdateMode="Conditional" ClientIDMode="Static">
<ContentTemplate>
<asp:GridView ID="gvChildrenTasks" runat="server" AllowSorting="false" ShowHeaderWhenEmpty="false" AlternatingRowStyle-BackColor="#EBE9E9" AutoGenerateColumns="false" ClientIDMode="Static">
<Columns>
<asp:BoundField DataField="Task Name" HeaderText="Task Name" SortExpression="Task Name" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Due Date" HeaderText="Due" SortExpression="Due Date" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Manager" HeaderText="Manager" SortExpression="Manager" ItemStyle-CssClass="taskTableColumn" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
jQuery顯示彈出窗口:
$(document).ready(function () {
$("#btnShowDepend").click(function (e) {
e.preventDefault();
centerPopupDep();
loadPopupDep();
});
});
當我單擊btnShowDepend
圖像時,將顯示彈出窗口,但GridView
中將不顯示任何內容。 另外,因為我使用的是ID,所以如果有多行,則只有第一個按鈕會觸發彈出窗口。
如何修改代碼,以便在彈出窗口中填充GridView
並為代表單獨行的每個按鈕處理自己的單擊?
使用類來綁定ID的字符串
ASP:
<asp:UpdatePanel runat="server" ClientIDMode="Static" ID="TasksUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ShowHeaderWhenEmpty="false" AlternatingRowStyle-BackColor="#EBE9E9" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDataText="You currently have no tasks assigned to you" OnRowDataBound="yourTasksGV_RowDataBound" OnRowCreated="yourTasksGV_RowCreated" OnRowCommand="yourTasksGV_RowCommand">
<Columns>
<asp:HyperLinkField Target="_self" DataNavigateUrlFields="Task Detail" DataTextField="Task Name" DataNavigateUrlFormatString="" HeaderText="Task Detail" SortExpression="Task Name" ItemStyle-CssClass="taskTableColumn" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ImageUrl="~/theImages/Dependencies.png" CssClass="gvTaskDep btnShowDepend" runat="server" ID="btnShowDepend" CommandName="TaskDepend" CommandArgument='<%#Eval("Object") + "," + Eval("FK") %>' ToolTip="Click to view Dependencies" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
jQuery的:
$(document).ready(function () {
$(".btnShowDepend").click(function (e) {
e.preventDefault();
centerPopupDep();
loadPopupDep();
});
});
在按鈕上添加了btnShowDepend類,從而啟用了到Jquery的綁定。 如果您想傳輸一個ID,您可以將其添加為alt並通過獲取.attr('alt')來獲取
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.