簡體   English   中英

如何在UpdatePanel中單擊按鈕后如何在UpdatePanel內部的彈出窗口中填充GridView

[英]How to populate a GridView in a pop-up that is inside an UpdatePanel after a button click inside an UpdatePanel

我有一個具有ImageButtonGridView 單擊時,它將運行查詢並從結果填充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>

ObjectFK來自填充以上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 != "&nbsp;")
            {
                // 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM