动态生成GridView时,加入DataKeyNames属性,回调时出错解决方法
早上看到有位同學(xué)問關(guān)于自動生成GridVie并且添加DataKeyNames屬性后
回調(diào)頁面時,出現(xiàn)錯誤異常.下面是我實現(xiàn)的方法。注意一點。就是數(shù)據(jù)綁定的時間。
要是先綁定,再添加到div1中,回調(diào)頁面時,就會出錯。
頁面代碼:
??? <div runat="server" id="div1" enableviewstate="false">
??? </div>
??? <asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="Button" />
?
cs代碼:
?
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? bindGV();
??? }
??? private static DataTable NewMethod()
??? {
??????? DataTable dt = new DataTable();
??????? dt.Columns.Add("id", typeof(int));
??????? dt.Columns.Add("name", typeof(string));
??????? for (int i = 0; i < 5; i++)
??????? {
??????????? DataRow dr = dt.NewRow();
??????????? dr["id"] = i;
??????????? dr["name"] = "Name" + i;
??????????? dt.Rows.Add(dr);
??????? }
??????? return dt;
??? }
??? private void bindGV()
??? {
??????? div1.Controls.Clear();
??????? int t = 0;
??????? while (t < 3)
??????? {
??????????? GridView gv = new GridView();
??????????? gv = CreateSuperGrid();
??????????? div1.Controls.Add(gv);
??????????? t++;
??????? }
??????? for (int i = 0; i < div1.Controls.Count;i++ )
??????? {
??????????? //我這里是先把GridView加入div1中,之后才進(jìn)行數(shù)據(jù)綁定
??????????? ((GridView)div1.Controls[i]).DataSource = NewMethod();
??????????? ((GridView)div1.Controls[i]).DataBind();
??????? }
??? }
??? private GridView CreateSuperGrid()
??? {
??????? GridView gv = new GridView();
??????? gv.AutoGenerateColumns = false;
??????? gv.EnableViewState = true;
??????? gv.DataKeyNames = new string[] { "id" };
??????? BoundField bf = new BoundField();
??????? bf = new BoundField();
??????? bf.HeaderText = "序號";
??????? bf.DataField = "id";
??????? gv.Columns.Add(bf);
??????? BoundField bf2 = new BoundField();
??????? bf2.HeaderText = "名稱";
??????? bf2.DataField = "name";
??????? gv.Columns.Add(bf2);
??????? CommandField cf = new CommandField();
??????? cf.ShowSelectButton = true;
??????? gv.Columns.Add(cf);
??????? gv.SelectedIndexChanging += new GridViewSelectEventHandler(GridView1_SelectedIndexChanged);
??????? return gv;
??? }
??? //用做回調(diào)頁面用的
??? protected void Button1_Click(object sender, EventArgs e)
??? {
??? }
??? protected void GridView1_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
??? {
??????? string value = ((System.Web.UI.WebControls.GridView)(sender)).DataKeys[e.NewSelectedIndex].Value.ToString();//這里可以看到取到的id值
??? }
轉(zhuǎn)載于:https://www.cnblogs.com/yijie/archive/2008/09/04/1283883.html
總結(jié)
以上是生活随笔為你收集整理的动态生成GridView时,加入DataKeyNames属性,回调时出错解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粉萌懂事男孩妆值多少钱?
- 下一篇: 真石漆多少钱啊?