我就是我,从不多说,直接开始:
一、赋值
前台:
设计有两种方法:赋值一样,但是取值却有所不同。
1、GridView节点的Cloumns节点里面添加如下样式:
<asp:TemplateField HeaderText="系统ID">
<ItemTemplate>
<asp:Label ID="id" Text='<%#Eval("Id") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
2、GridView节点的Cloumns节点里面添加如下样式:
<asp:BoundField HeaderText="系统ID" DataField="Id" />
后台:在页面加载Page_Load事件或者自己定义的事件添加方法引用即可。
public void BindGird()
{
string sql = "select * from Users";
GridView1.DataSource = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString, CommandType.Text, sql, null);//DataTable或者DataSet
GridView1.DataKeyNames = new string[] { "Id"};//主键,取值时用到可以一个或多个值
GridView1.DataBind();//绑
}
二、取值
取值主要在后台,原理是获取行的索引,单元格的索引,以下是非编辑状态下取值,编辑状态下的自行百度,目前我接触的方法有:
前台设计方式为1的TemplateField(模板列)的取值:
在GridView1_RowEditing事件中:
String id=((Label)GridView1.Rows[e.NewEditIndex].Cells[0].FindControl("id")).Text;//Cells的索引指第几个单元格。
前台设计方式为2的BoundField(绑定列) 的取值:
String id=GridView1.Rows[e.NewEditIndex].Cells[0].Text;//Cells的索引与Cloumns的里的BoundField绑定列的位置有关。
其他方式的取值:
1、自定义按钮(即在模板列的按钮)
I、CommandArgument方式
前台:
<asp:Button ID="btnUpdate" runat="server" CommandArgument='<%#Container.DataItemIndex%>' Text="更新" OnClick="btnUpdate_Click" />
后台:
Button btn = sender as Button;
int index = int.Parse(btn.CommandArgument);
string name = ((Label)GridView1.Rows[index].Cells[0].FindControl("name")).Text;
II、CommandName方式
前台:
<asp:Button ID="btnEidt" runat="server" CommandName='<%#Eval("LoginId") %>' Text="编辑" OnClick="Eidt_Click" />
后台:
Button btn = sender as Button;
string name = btn.CommandName;
2、DataKeyNames 方式(模板列和编辑列都可以)
给GridView赋值时添加DataKeyNames的作用,取隐藏列时作用很大
string id = GridView1.DataKeys[e.NewEditIndex].Value.ToString();