因为需要对GridView中HyperLinkField列和ButtonField列的取值,搜索了一下看到好多资料都是这样写的:
string str = ((HyperLink)row.Cells[1].Controls[0]).Text;
string str2 = ((Button)row.Cells[2].Controls[0]).Text; //注意红色部分
可是我这样取的话会报:无法将类型为“System.Web.UI.WebControls.DataControlLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.Button”。
。。。。。。。
我是这样写的:
string str = ((HyperLink)row.Cells[1].Controls[0]).Text;
string str2 = ((LinkButton)row.Cells[2].Controls[0]).Text; //应该是LinkButton类型的
下面代码,主要是记录下来怎样New 一个 DataTable 并添加数据的代码。留作自己备用。
HTML中代码:
HTML部分的代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateField HeaderText="选择">
<HeaderStyle Width="4%"></HeaderStyle>
<ItemTemplate >
<FONT face="宋体">
<asp:CheckBox id="chkID" runat="server"></asp:CheckBox></FONT>
</ItemTemplate>
<ItemStyle Width="5%" HorizontalAlign="Center" />
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="UserCode"
DataTextField="UserCode" HeaderText="Code" >
<ItemStyle Width="10%" />
</asp:HyperLinkField>
<asp:ButtonField DataTextField="UserName" HeaderText="Name" Text="按钮" />
<asp:BoundField DataField="UserSex" HeaderText="Sex" />
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateField HeaderText="选择">
<HeaderStyle Width="4%"></HeaderStyle>
<ItemTemplate >
<FONT face="宋体">
<asp:CheckBox id="chkID" runat="server"></asp:CheckBox></FONT>
</ItemTemplate>
<ItemStyle Width="5%" HorizontalAlign="Center" />
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="UserCode"
DataTextField="UserCode" HeaderText="Code" >
<ItemStyle Width="10%" />
</asp:HyperLinkField>
<asp:ButtonField DataTextField="UserName" HeaderText="Name" Text="按钮" />
<asp:BoundField DataField="UserSex" HeaderText="Sex" />
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
后台代码:
后台添加数据
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("UserCode",Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("UserName", Type.GetType("System.String"));
DataColumn dc3 = new DataColumn("UserSex", Type.GetType("System.Int32"));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr = dt.NewRow();
dr["UserCode"] = "Code 1";
dr["UserName"] = "Name 1";
dr["UserSex"] = 1;
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int i = 1;
foreach (GridViewRow row in this.GridView1.Rows)
{
//if (i == 5)
//{
string str = ((HyperLink)row.Cells[1].Controls[0]).Text;
string str2 = ((LinkButton)row.Cells[2].Controls[0]).Text;
string str3 = row.Cells[3].Text.Equals("1") ? "男" : "女";
Page.ClientScript.RegisterStartupScript(this.GetType(),"alert","alert('"+str + "\\r\\n" + str2 + "\\r\\n" + str3+"');",true);
//}
//i++;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("UserCode",Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("UserName", Type.GetType("System.String"));
DataColumn dc3 = new DataColumn("UserSex", Type.GetType("System.Int32"));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr = dt.NewRow();
dr["UserCode"] = "Code 1";
dr["UserName"] = "Name 1";
dr["UserSex"] = 1;
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int i = 1;
foreach (GridViewRow row in this.GridView1.Rows)
{
//if (i == 5)
//{
string str = ((HyperLink)row.Cells[1].Controls[0]).Text;
string str2 = ((LinkButton)row.Cells[2].Controls[0]).Text;
string str3 = row.Cells[3].Text.Equals("1") ? "男" : "女";
Page.ClientScript.RegisterStartupScript(this.GetType(),"alert","alert('"+str + "\\r\\n" + str2 + "\\r\\n" + str3+"');",true);
//}
//i++;
}
}