c# - 如何根据位于 updatePanel 中的 DataGrid 中所做的行选择来更新控件 [DataGrid、TextBoxes 和 Label]?

标签 c# javascript asp.net asp.net-ajax updatepanel

我有一个网格 [Grid1],它在单击按钮 [search] 时构建其数据行,我设法通过将其放置在 UpdatePanel 中对其进行 Ajax 化,并且工作正常。在 Ajaxifying Grid 1 之前,单击 Grid 1 中的一行时,另一个网格 [Grid2] 和一些其他控件 [Text and Labels] 用于填充/更新。

Grid2 和其他控件用于在 Grid 1 的 OnItemCommand 事件上填充/更新。它是 OnItemCommand 中的代码,将相关数据绑定(bind)到 Grid2 和其他控件。

在我将 Grid 1 放入更新面板后,它们停止了更新。如果我将 Grid2 和其他控件放在同一个更新面板中,它会工作正常,但页面的设计方式使我无法将这些控件与第一个 Grid 放在同一个 UpdatePanel 中,我也不打算使用另一个更新面板。

我希望我说得有道理。我是 .Net 的新手,所以请原谅。请在下面找到代码。

 <asp:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server"></asp:ScriptManager>
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers ="True">
      <ContentTemplate>
       <asp:DataGrid ID="grdJobs" runat="server" AllowPaging="true" 
        AlternatingItemStyle-CssClass="gridAltItemStyle"
        AutoGenerateColumns="False" CellPadding="0" 
        DataKeyField="code"
        CssClass="datagridBox" 
        GridLines="horizontal" 
        PagerStyle-Mode="NumericPages"
        HeaderStyle-CssClass="gridHeaderStyle" 
        ItemStyle-CssClass="gridItemStyle"
        PagerStyle-CssClass="gridPagerStyle" 
        Width="445px" OnPageIndexChanged="grdJobs_PageIndexChanged" OnItemCreated="grdJobs_ItemCreated" OnItemCommand="grdJobs_ItemCommand"             OnItemDataBound="grdJobs_ItemDataBound">
         <Columns>
          <asp:BoundColumn  DataField="J_ID" HeaderText="Job"></asp:BoundColumn>
          <asp:BoundColumn  DataField="Contract" HeaderText="Contract" ReadOnly="True"></asp:BoundColumn>
          <asp:BoundColumn  DataField="J_Fault_Line1" HeaderText="Fault" ReadOnly="True"></asp:BoundColumn>
          <asp:BoundColumn  DataField="j_p_id" HeaderText="Fault" Visible="false" ></asp:BoundColumn>
          <asp:ButtonColumn Text="<img src=images/addFeedback.gif style=border: 0px; alt=Add Feedback>" ButtonType="LinkButton"  HeaderText="Add"                   CommandName="Load" ItemStyle-cssClass="Col_9_Item_2"></asp:ButtonColumn>
         </Columns>
        </asp:DataGrid>
       <asp:ImageButton ID="cmdLkp"  ImageUrl="Images/search.gif" runat="server" OnClick="cmdLkp_Click" />

       </ContentTemplate>
      </asp:UpdatePanel>

后面的代码停止工作

protected void grdJobs_ItemCommand(object source, DataGridCommandEventArgs e)
    {

        if (e.CommandName == "Load")
        {
            functionToBindDataToGrid2();
            functionToBindDataToOtherControls();
        }
}

 protected void grdJobs_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
      e.Item.Attributes.Add("onclick", "javascript:__doPostBack('grdJobs$ctl" + ((Convert.ToInt32(e.Item.ItemIndex + 3).ToString("00"))) + "$ctl00','')");
     }

最佳答案

在 UpdatePanel 的属性中,将更新模式设置为“Conditional”并将 ChildrenAsTriggers 设置为“true”。

另一种选择是将按钮移到更新面板内,这样您就不必再使用触发器了。

关于c# - 如何根据位于 updatePanel 中的 DataGrid 中所做的行选择来更新控件 [DataGrid、TextBoxes 和 Label]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950206/

相关文章:

c# - C# 中的聚合与继承,或替代方案

c# - 在asp.net中将图片url转换为图片bye

asp.net - 如何防止 WebResource.axd 错误的错误消息出现在应用程序日志中?

c# - 从命令行运行时 StartupObject 的行为与修改 CSPROJ 文件时的行为不同

c# - ThreadPool 中的异常代码是什么?

c# - Label.Content 无法正常工作

javascript - 如何使用 javascript/jquery 将一秒添加到时间字符串

javascript - 如何将 Javascript 对象转换为 url 字符串?

javascript - flutter inappwebview 未在控制台上打印

asp.net - ASP.NET 身份验证何时发生?