datalist中textbox取值问题,急

sumsung0714 2012-08-22 07:20:15
我在datalist中插入了一个TEXTBOX,怎么获取textbox所在的DATALIST主键值,下面代码如不带条件是可以全部更新数据库的,但不会加条件获取到对应TEXTBOX的主键值,求解答,急。。。
        
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>");
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sumsung0714 2012-08-23
  • 打赏
  • 举报
回复
谢谢完成了。
sumsung0714 2012-08-23
  • 打赏
  • 举报
回复
谢谢啊,但按你的方法显示几条记录并更新后,只能更新第一条记录。
zhangdaowu5 2012-08-23
  • 打赏
  • 举报
回复

不好意思没仔细看颜色标示,注意几点
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();

zhangdaowu5 2012-08-23
  • 打赏
  • 举报
回复

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();






zhangdaowu5 2012-08-23
  • 打赏
  • 举报
回复


方法一:如果你的第一列序号列也是主键列的话就直接在循环里面取每行的第一个单元格的值,他就是你的主键
方法二:
你将你的序号列绑定为主键:
<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你应该会写了
}
H_Gragon 2012-08-23
  • 打赏
  • 举报
回复
首先你datalist的每一行里都有修改或删除按钮吧:你让按钮绑定主键值(我这里以imagebutton为例)

<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());
//取到每行主键值后你修改或删除就都可以了
}
wangxuebo 2012-08-23
  • 打赏
  • 举报
回复
你的按钮是放在datalist里面还是外面的?如果放里面,你的写法就是错的,如果放在外面,根本没办法获取你要更新行的主键值
sumsung0714 2012-08-23
  • 打赏
  • 举报
回复
没人理袄。

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧