C#Dategridview动态生成控件checkbox,为什么运行时点击checkbox不能选中?
3个回答
2013-07-25
展开全部
前台代码如下:
<asp:GridView ID="testDatagrid" runat="server" AutoGenerateColumns="False" OnRowDataBound="testDatagrid_RowDataBound" Width="294px" Height="134px">
<Columns>
<asp:CheckBoxField HeaderText="可选" />
<asp:BoundField DataField="ToolName" HeaderText="text" />
<asp:TemplateField HeaderText="数量"></asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="数据的更新" />
后台代码实现如下:
#region GridView绑定动态生成的控件
protected void testDatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
CheckBox check = new CheckBox();
check.ID = e.Row.RowIndex.ToString();
check.AutoPostBack = true;
check.CheckedChanged += new EventHandler(check_CheckedChanged);
e.Row.Cells[0].Controls.Add(check);
TextBox text = new TextBox();
text.Width = 15;
text.ID = "txt" + e.Row.RowIndex.ToString();
text.Enabled = false;
e.Row.Cells[2].Controls.Add(text);
HiddenField hidden = new HiddenField();
hidden.Value = da.Tables[0].Rows[e.Row.RowIndex][0].ToString();
hidden.ID = "Hidd" + e.Row.RowIndex.ToString();
e.Row.Cells[2].Controls.Add(hidden);
}
}
#endregion
#region 处理checkbox所触发的事件
void check_CheckedChanged(object sender, EventArgs e)
{
int i = Convert.ToInt32(((CheckBox)sender).ID);
TextBox box = this.testDatagrid.Rows[i].Cells[2].FindControl("txt" + i.ToString()) as TextBox;
box.Enabled = true;
}
#endregion
#region 将客户所选的数据插入数据库
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.testDatagrid.Rows.Count; i++)
{
CheckBox chB = this.testDatagrid.Rows[i].Cells[0].FindControl(i.ToString()) as CheckBox;
TextBox txB = this.testDatagrid.Rows[i].Cells[2].FindControl("txt" + i.ToString()) as TextBox;
HiddenField hid = this.testDatagrid.Rows[i].Cells[2].FindControl("Hidd" + i.ToString()) as HiddenField;
int ii = -1;
if (chB.Checked)
{
if (txB.Text != null)
{
try
{
//引用 DataBase.dll
ii = new ZHXKDatabase(connStr).RunSQLCommandReturnInt("insert into Relation (ToolsID,TagID,[Desc]) values (" + hid.Value + "," + 12 + "," + int.Parse(txB.Text.Trim()) + ")");
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
if (ii == 1)
{
Response.Write("OK!");
}
}
}
}
#endregion
<asp:GridView ID="testDatagrid" runat="server" AutoGenerateColumns="False" OnRowDataBound="testDatagrid_RowDataBound" Width="294px" Height="134px">
<Columns>
<asp:CheckBoxField HeaderText="可选" />
<asp:BoundField DataField="ToolName" HeaderText="text" />
<asp:TemplateField HeaderText="数量"></asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="数据的更新" />
后台代码实现如下:
#region GridView绑定动态生成的控件
protected void testDatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex > -1)
{
CheckBox check = new CheckBox();
check.ID = e.Row.RowIndex.ToString();
check.AutoPostBack = true;
check.CheckedChanged += new EventHandler(check_CheckedChanged);
e.Row.Cells[0].Controls.Add(check);
TextBox text = new TextBox();
text.Width = 15;
text.ID = "txt" + e.Row.RowIndex.ToString();
text.Enabled = false;
e.Row.Cells[2].Controls.Add(text);
HiddenField hidden = new HiddenField();
hidden.Value = da.Tables[0].Rows[e.Row.RowIndex][0].ToString();
hidden.ID = "Hidd" + e.Row.RowIndex.ToString();
e.Row.Cells[2].Controls.Add(hidden);
}
}
#endregion
#region 处理checkbox所触发的事件
void check_CheckedChanged(object sender, EventArgs e)
{
int i = Convert.ToInt32(((CheckBox)sender).ID);
TextBox box = this.testDatagrid.Rows[i].Cells[2].FindControl("txt" + i.ToString()) as TextBox;
box.Enabled = true;
}
#endregion
#region 将客户所选的数据插入数据库
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.testDatagrid.Rows.Count; i++)
{
CheckBox chB = this.testDatagrid.Rows[i].Cells[0].FindControl(i.ToString()) as CheckBox;
TextBox txB = this.testDatagrid.Rows[i].Cells[2].FindControl("txt" + i.ToString()) as TextBox;
HiddenField hid = this.testDatagrid.Rows[i].Cells[2].FindControl("Hidd" + i.ToString()) as HiddenField;
int ii = -1;
if (chB.Checked)
{
if (txB.Text != null)
{
try
{
//引用 DataBase.dll
ii = new ZHXKDatabase(connStr).RunSQLCommandReturnInt("insert into Relation (ToolsID,TagID,[Desc]) values (" + hid.Value + "," + 12 + "," + int.Parse(txB.Text.Trim()) + ")");
}
catch (Exception exc)
{
Response.Write(exc.Message);
}
}
if (ii == 1)
{
Response.Write("OK!");
}
}
}
}
#endregion
2013-07-25
展开全部
是不是有Datagridview的cell点击事件,看看是否覆盖了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-25
展开全部
代码写错了 当然选不中咯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询