62,047
社区成员
发帖
与我相关
我的任务
分享
protected void Button1_Click(object sender, EventArgs e)
{
string sqlStr = "";
SqlConnection myConn = GetConnection();
myConn.Open();
for (int i = 0; i < DataList1.Items.Count - 1; i++)
{
TextBox tb = (TextBox)(DataList1.Items[i].FindControl("TextBox1"));
sqlStr = "update gg_gg set gg_fknr= '" + tb.Text.Trim()+ "',gg_fkzt='1',gg_fksj='" + DateTime.Now.ToString() + "'where gg_id='"+this.DataList1.DataKeys[i].ToString()+"'";
}
SqlCommand myCmd = new SqlCommand(sqlStr, myConn);
myCmd.ExecuteNonQuery();
myCmd.Dispose();
myConn.Close();
Response.Write("<script language=javascript>alert('信息反馈成功!');javascript:location.replace('ggfk.aspx')</script>");
不好意思没仔细看颜色标示,注意几点
1.获取主键和文本框的值
2.sqlStr +=""; //意思是循环组成sql注意每条sql后面加上";"
3.在批量Update的时候加上事务
1.页面序号列绑定你的主键,用Label显示
<asp:Label ID="Label1" runat="server" Text='<%# Eval("PK主键") %>'></asp:Label>
protected void Button1_Click(object sender, EventArgs e)
{
string sqlStr = "";
SqlConnection myConn = GetConnection();
myConn.Open();
for (int i = 0; i < DataList1.Items.Count - 1; i++)
{
Label Label1 = DataList1.Items[i].FindControl("Label1") as Label;
string PKValue=Label1.Text; //获取每行的主键值
TextBox tb = (TextBox)(DataList1.Items[i].FindControl("TextBox1"));
string gg_fknr=tb.Text.Trim(); //获取文本框的值
string gg_fksj=DateTime.Now.ToString();
sqlStr+="update gg_gg set
gg_fknr= '"+gg_fknr+ "',gg_fkzt='1',gg_fksj='" + gg_fksj+ "'where
gg_id='"+PKValue+'";";
}
SqlCommand myCmd = new SqlCommand(sqlStr, myConn);
//备注批量操作的话,建议LZ加上事务
int result= myCmd.ExecuteNonQuery(); //执行更新操作
if(result>0)
{
Response.Write("<script language=javascript>alert('信息反馈成功!');javascript:location.replace('ggfk.aspx')</script>");
}
else
{
Response.Write("<script language=javascript>alert('信息反馈失败!');</script>");
return;
}
myCmd.Dispose();
myConn.Close();
LZ你上面貌似是想做一个批量操作吧,代码貌似有点问题哦。简单的给你写一个吧,你拿改一下过去
1.页面序号列绑定你的主键,用Label显示
<asp:Label ID="Label1" runat="server" Text='<%# Eval("PK主键") %>'></asp:Label>
protected void Button1_Click(object sender, EventArgs e)
{
string sqlStr = "";
SqlConnection myConn = GetConnection();
myConn.Open();
for (int i = 0; i < DataList1.Items.Count - 1; i++)
{
Label Label1 = DataList1.Items[i].FindControl("Label1") as Label;
string PKValue=Label1.Text; //获取每行的主键值
TextBox tb = (TextBox)(DataList1.Items[i].FindControl("TextBox1"));
string gg_fknr=tb.Text.Trim(); //获取文本框的值
string gg_fksj=DateTime.Now.ToString();
此处分开写便于自己调试跟踪值
sqlStr += "update gg_gg set
gg_fknr= '"+gg_fknr+ "',gg_fkzt='1',gg_fksj='" + gg_fksj+ "'where
gg_id='"+PKValue+'";";
}
SqlCommand myCmd = new SqlCommand(sqlStr, myConn);
备注如果是批量操作的话,建议LZ加上事务
int result= myCmd.ExecuteNonQuery();
if(result>0)
{
Response.Write("<script language=javascript>alert('信息反馈成功!');javascript:location.replace('ggfk.aspx')</script>");
}
myCmd.Dispose();
myConn.Close();
方法一:如果你的第一列序号列也是主键列的话就直接在循环里面取每行的第一个单元格的值,他就是你的主键
方法二:
你将你的序号列绑定为主键:
<asp:Label ID="Label1" runat="server" Text='<%# Eval("PK主键") %>'></asp:Label>
for (int i = 0; i < DataList1.Items.Count-1; i++)
{
Label Label1 = DataList1.Items[i].FindControl("Label1") as Label;
string PKValue=Label1.Text; //获取每行的主键值
...
下面就是你更新的操作了,接下来的代码LZ你应该会写了
}
<asp:ImageButton class="DelClass" ID="IBDelClass" runat="server" CommandArgument='<%#Eval("Id")%>' CommandName="Del" ImageUrl="~/Images/Delete.gif" ToolTip="删除该类..."/>
//CommandArgument绑定每一样的主键
后台取值:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
int id = Convert.ToInt32(e.CommandArgument.ToString());
//取到每行主键值后你修改或删除就都可以了
}