【发布时间】:2014-09-08 20:23:28
【问题描述】:
我有一个GridView,其中有一个ImageButton。当点击它时,它会运行一个查询并从结果中填充一个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,并且每个代表单个行的按钮都处理自己的点击?
【问题讨论】:
-
.ready 函数是否在调用任何查询数据调用之前首先触发..?它是否加载网格将是我的第一个问题.. 从那里我会缩小范围并确定它在过程中的哪个位置失败和或没有产生正确的结果.. 我强烈建议将该数据库查询转换为存储利用参数化查询的过程..在当前状态下很难遵循这样的代码
标签: c# jquery asp.net gridview