当前位置:编程学习 > C#/ASP.NET >>

gridview 动态列排序后 控件丢失

 gridview 里有几列固定的(里面有控件),有一些动态加载进去的普通列,普通列进行排序后,固定列里面的控件丢失。

前台代码如下:
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="True"
                OnSorting="GridView1_Sorting" OnRowDataBound="GridView1_RowDataBound" Width="100%"
                OnRowCommand="GridView1_RowCommand">
                <Columns>
                    
                    <asp:TemplateField HeaderText="T">
                        <HeaderTemplate>
                            <input id="cSelected" type="checkbox" onclick="checkAll(this);" runat="server" />
                        </HeaderTemplate>
                                      
                        <ItemTemplate>
                            <input id="chkBoxBase" type="checkbox" runat="server" />
                            <asp:Label ID="PK_ID" Text='<%# DataBinder.Eval(Container.DataItem,"NET_ID") %>'
                                Visible="False" runat="server">
                            </asp:Label>
                        </ItemTemplate>
                        <ItemStyle Width="5px" />
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="操作" ItemStyle-Width="90px" HeaderStyle-Width="90px"
                        HeaderStyle-Wrap="false" ItemStyle-Wrap="false">
                        <ItemTemplate>
                            <img title="查看" src="../../../../images/btn_list.gif" onclick="OpenManager(<%# Eval("NET_ID") %>,'list',800,450);" />
                            <img title="修改" src="../../../../images/btn_edi.gif" onclick="OpenEditor(<%# Eval("NET_ID") %>,800,450);" />
                            <asp:ImageButton ID="btn_Gdel" CommandName="btn_Gdel" runat="server" CommandArgument='<%# Eval("NET_ID") %>'
                                OnClientClick="return window.confirm( '您确定要删除吗? ');" ImageUrl="../../../../images/btn_del2.gif"
                                ToolTip="删除" />
                        </ItemTemplate>





后台代码如下:
  int i=1;
            // 将所有的列名都添加到GridView中去             
            foreach (string str in temp)
            {
                if (str != "")
                {
                    BoundField bf = new BoundField();
                    // 数据域为当前列的内容;    
                    bf.DataField = str;

                    string sql = "SELECT *  FROM USER_COL_COMMENTS  WHERE TABLE_NAME='" + tablename + "' AND COLUMN_NAME='" + str + "'";
                    DataTable dttext = EFLY.Common.OracleHelper.ExecuteDataset(CommonBase.GetOracleConnection, CommandType.Text, sql).Tables[0];
                    // 获取列名
                    string headname = dttext.Rows[0]["COMMENTS"].ToString();
                    string columnname =dttext.Rows[0]["COLUMN_NAME"].ToString();
                    //绑定到GridView 列标头
                    bf.HeaderText = headname;
                    bf.SortExpression=columnname;
                    this.GridView1.Columns.Insert(i, bf);
                    i++;
                }
                DataTable data = EFLY.BLL.T_ZX_XY_BTS_COVER.GetDataTableWhere("*", "1 = 1");
                this.GridView1.DataSource = data;






第一次进去 没问题 
排序后 控件就丢失了。  --------------------编程问答-------------------- 肿么木有人知道 啊。
--------------------编程问答--------------------  代码没看懂 你要表达的意思
补充:.NET技术 ,  组件/控件开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,