如何更新基于DataGrid中做了一个行选择,在的UpdatePanel控件resideds [DataGrid中,文本框和标签] [英] How to update controls[DataGrid,TextBoxes and Label] based on a row selection made in DataGrid that resideds in a updatePanel?

查看:215
本文介绍了如何更新基于DataGrid中做了一个行选择,在的UpdatePanel控件resideds [DataGrid中,文本框和标签]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个网格[GRID1]认为建立自己的数据行一个按钮被点击[查询]的时候,我设法将其放置在一个UpdatePanel到Ajaxify它,它工作得很好。 Ajaxifying网1之前,另一格[GRID2]和其他一些控制[文字和标签]用来获取填充/被点击网格1行时更新。

该GRID2并用来获取填充/更新网格1.Its的code在结合相关数据GRID2和其他控制OnItemCommand的OnItemCommand事件等控制。

我放在更新面板网格1后,他们停止了更新。如果我把GRID2和其他控制同一更新面板中,但网页设计中,我不能在同一UpdatePanel的这些控件作为第一个网格,也没有我不打算用另一个更新面板某种程度上,这将正常工作。

我希望我做一些感觉。我在.net中新手,所以请原谅。请看以下code。

 < ASP:ScriptManager的的EnablePartialRendering =真ID =ScriptManager1=服务器>< / ASP:ScriptManager的>
     < ASP:的UpdatePanel ID =UpdatePanel1=服务器的UpdateMode =条件ChildrenAsTriggers =真>
      <&的ContentTemplate GT;
       < ASP:DataGrid的ID =grdJobs=服务器AllowPaging =真
        AlternatingItemStyle-的CssClass =gridAltItemStyle
        的AutoGenerateColumns =假CELLPADDING =0
        DataKeyField =code
        的CssClass =datagridBox
        网格线=横向
        PagerStyle模式=NumericPages
        HeaderStyle-的CssClass =gridHeaderStyle
        ItemStyle-的CssClass =gridItemStyle
        PagerStyle-的CssClass =gridPagerStyle
        WIDTH =445pxOnPageIndexChanged =grdJobs_PageIndexChangedOnItemCreated =grdJobs_ItemCreatedOnItemCommand =grdJobs_ItemCommandOnItemDataBound =grdJobs_ItemDataBound>
         <柱体和GT;
          < ASP:绑定列的DataField =J_ID的HeaderText =作业>< / ASP:绑定列>
          < ASP:绑定列的DataField =合同的HeaderText =合同只读=真>< / ASP:绑定列>
          < ASP:绑定列的DataField =J_Fault_Line1的HeaderText =故障只读=真>< / ASP:绑定列>
          < ASP:绑定列的DataField =j_p_id的HeaderText =故障可见=假>< / ASP:绑定列>
          < ASP:ButtonColumn文本=< IMG SRC =图像/ addFeedback.gif风格=边界:0像素; ALT =添加反馈与GT;按钮类型=LinkBut​​ton的的HeaderText =添加的CommandName =装载ItemStyle-的CssClass =Col_9_Item_2>< / ASP:ButtonColumn>
         < /专栏>
        < / ASP:DataGrid的>
       < ASP:ImageButton的ID =cmdLkp的ImageUrl =图片/ search.gif=服务器的OnClick =cmdLkp_Click/>       < /&的ContentTemplate GT;
      < / ASP:的UpdatePanel>

在code以下的code背后停止工作。

 保护无效grdJobs_ItemCommand(对象源,DataGridCommandEventArgs E)
    {        如果(e.CommandName ==装载)
        {
            functionToBindDataToGrid2();
            functionToBindDataToOtherControls();
        }
} 保护无效grdJobs_ItemDataBound(对象发件人,DataGridItemEventArgs E)
    {
      e.Item.Attributes.Add(onclick事件的javascript:__ doPostBack('grdJobs $ CTL+((Convert.ToInt32(e.Item.ItemIndex + 3)的ToString(00)))+$ ctl00 ',''));
     }


解决方案

一个GridView控件是一个复杂的asp.net服务器控件。你将有很多的困难,更新GRID2 GRID1是在UpdatePanel内更新后。然而,为一个GRID1被更新之后在客户端上执行JavaScript它是可能的。你可以更新GRID1更新面板内,GRID1已更新,将更新页面上的HTML后执行JavaScript。问题是,用javascript更新GRID2将是工作的一个噩梦量。

下面就是我讲的一个例子:使用Ajax的GridView的启用在JavaScript的ASP.NET 。这是一个总的黑客,一个巨大的工作量和你的同事会恨你时,他们必须维护它。

如果您想更新标签或下拉列表那么这将是可能的,但更新使用Javascript的GridView,并具有这些更新在回传坚持是一项艰巨的挑战。

I have got a grid[Grid1] that build its dataRows when a button[search] is clicked, I managed to Ajaxify it by placing it in an UpdatePanel and it worked fine. Before Ajaxifying Grid 1, another grid[Grid2] and some other controls[Text and Labels] used to get populated/updated when a row in Grid 1 was clicked .

The Grid2 and other controls used to get populated/updated on the OnItemCommand Event of Grid 1.Its the code in the OnItemCommand that binds the related data to Grid2 and other controls.

After I placed the Grid 1 in the update panel,they stopped updating. It will work fine if I place Grid2 and other controls in the same Update Panel but the page is designed in a way that I cant have those controls in the same UpdatePanel as the first Grid nor I dont intend to use another Update Panel.

I hope I'm making some sense. I'm a newbie in .Net so please excuse. Please find the code below.

 <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>

The code below in the code behind stopped working

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','')");
     }

解决方案

A GridView is a complex asp.net server control. You will have a lot of difficulty updating Grid2 after Grid1 is updated inside of the UpdatePanel. However, it is possible to a execute JavaScript on the client after Grid1 is updated. You could update Grid1 inside of the update panel, execute JavaScript after Grid1 has been updated that will update HTML on the page. The problem is that updating Grid2 with Javascript is going to be a nightmare amount of work.

Here's an example of what I'm talking about: Ajax Enabled Gridview using JavaScript in ASP.NET. It is a total hack, a huge amount of work, and your co-workers will hate you when they have to maintain it.

If you wanted to update a label or a dropdown list then that would be possible but updating a GridView using Javascript and having those updates persist across postbacks is a daunting challenge.

这篇关于如何更新基于DataGrid中做了一个行选择,在的UpdatePanel控件resideds [DataGrid中,文本框和标签]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆