小弟是新手,我做个页面,添加一个DataGrid控件和一个按纽.DataGrid控件中有checkbox和状态两列.要求实现点击按纽能把checkbox中选中项的状态栏中的值改写成2.但是我写的代码选中后点击按纽,所选种的项的状态值却不改变,调试一晚上也不知道原因...大虾救命啊~~~
代码如下:
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 160px; POSITION: absolute; TOP: 144px" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="50px"></HeaderStyle>
<ItemTemplate>
<asp:CheckBox id="cb" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="is_selected" HeaderText="状态">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 360px; POSITION: absolute; TOP: 264px" runat="server" Text="Button"></asp:Button></FONT>
</form>
</body>
</HTML>
__________________________________________________________________________________________
------------------------------------------------------------------------------------------private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
BindToDG();
// 在此处放置用户代码以初始化页面
}private void BindToDG()
{
SqlConnection con=new SqlConnection("server=localhost;database=test;uid=sa;pwd=;");
SqlDataAdapter sda=new SqlDataAdapter();
sda.SelectCommand=new SqlCommand("select * from test",con);
DataSet ds=new DataSet();
sda.Fill(ds,"apt");
this.DataGrid1.DataSource=ds.Tables["apt"];
this.DataGrid1.DataBind();
}private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
for(int i=0;i<DataGrid1.Items.Count;i++)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(((CheckBox)e.Item.FindControl("cb")).Checked==true)
{
SqlConnection con=new SqlConnection("server=localhost;database=test;uid=sa;pwd=;");
con.Open();
string str="update test set is_selected=2";
SqlCommand cmd=new SqlCommand(str,con);
cmd.ExecuteNonQuery();
}
}
}
}private void Button1_Click(object sender, System.EventArgs e)
{
BindToDG();
}
代码如下:
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 160px; POSITION: absolute; TOP: 144px" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<HeaderStyle Width="50px"></HeaderStyle>
<ItemTemplate>
<asp:CheckBox id="cb" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="is_selected" HeaderText="状态">
<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 360px; POSITION: absolute; TOP: 264px" runat="server" Text="Button"></asp:Button></FONT>
</form>
</body>
</HTML>
__________________________________________________________________________________________
------------------------------------------------------------------------------------------private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
BindToDG();
// 在此处放置用户代码以初始化页面
}private void BindToDG()
{
SqlConnection con=new SqlConnection("server=localhost;database=test;uid=sa;pwd=;");
SqlDataAdapter sda=new SqlDataAdapter();
sda.SelectCommand=new SqlCommand("select * from test",con);
DataSet ds=new DataSet();
sda.Fill(ds,"apt");
this.DataGrid1.DataSource=ds.Tables["apt"];
this.DataGrid1.DataBind();
}private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
for(int i=0;i<DataGrid1.Items.Count;i++)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
if(((CheckBox)e.Item.FindControl("cb")).Checked==true)
{
SqlConnection con=new SqlConnection("server=localhost;database=test;uid=sa;pwd=;");
con.Open();
string str="update test set is_selected=2";
SqlCommand cmd=new SqlCommand(str,con);
cmd.ExecuteNonQuery();
}
}
}
}private void Button1_Click(object sender, System.EventArgs e)
{
BindToDG();
}
解决方案 »
- 正则表达式!懂的来看看啊!
- asp.net entity framework code first用途?
- 错误,求解决方法
- 请教sql语句
- 如何在WEB.CONFIG中配置取消对某一页的登录验证
- DropDownList相关,在线?急~
- 关于Aspx页面间的参数传递问题
- 求一个简体转换繁体的字库
- 请问谁知道用sandcastle怎样才能做出msdn类型的帮助文档,如方法折叠到method下,字段折叠到filed下?
- 在DateGrid中的ButtonColumn中的按钮触发作的删除,如何在点击删除按钮后,做一个确认???答即送分!!!
- DropDownList 不能有多个项被选定!为什么?!!!!!!!!!!!!
- 如何动态创建文件夹
private void Button1_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem dgi in DataGrid1.Items)
{
if(dgi.Cells[0].FindControl("cb").Checked==true)
{
updateit();
}
}
BindToDG();
}
con.Open();
string str="update test set is_selected=2";
SqlCommand cmd=new SqlCommand(str,con);
cmd.ExecuteNonQuery();这段代码位置有问题!另外update test set is_selected=2需加where条件——(由checkbox事件获得参数)
新改的代码如下private void Button1_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem dgi in DataGrid1.Items)
{
if(((CheckBox)(dgi.Cells[0].FindControl("cb"))).Checked==true)
{
SqlConnection con = new SqlConnection("server=localhost;database=test;uid=sa;pwd=;");
con.Open();
SqlCommand cmd;
string str="update test set is_selected=2";
cmd=new SqlCommand(str,con );
cmd.ExecuteNonQuery();
}
} BindToDG();
}
=>
添加where 条件
if(((CheckBox)(dgi.Cells[0].FindControl("cb"))).Checked==true)