我的代码如下:
public partial class _Default : System.Web.UI.Page
{
OleDbConnection conn = new OleDbConnection(ConfigurationSettings.AppSettings["conStr"] + System.Web.HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["dbName"]));
DataSet ds = new DataSet(); public void dataBd()
{
OleDbDataAdapter da = new OleDbDataAdapter("select * from 信息表",conn);
conn.Open();
da.Fill(ds,"信息表");
conn.Close();
GridView1.DataSource = ds.Tables["信息表"];
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//此处要与不要都试过,未果
{
dataBd();
}
} protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string sqlStr = "update 信息表 set 姓名='" + GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Text + "' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
Button1.Text = sqlStr;
if (e.CommandName == "Edit")
{
GridView1.EditIndex = Convert.ToInt32(e.CommandArgument);
dataBd();
}
if (e.CommandName == "Update")
{
OleDbCommand comUd = new OleDbCommand(sqlStr, conn);
conn.Open();
comUd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
dataBd(); }
}
}总是将空值更新进数据库,每次都取不到值,已经困了我快一星期了,请指教!GridView我用自动绑定字段。
public partial class _Default : System.Web.UI.Page
{
OleDbConnection conn = new OleDbConnection(ConfigurationSettings.AppSettings["conStr"] + System.Web.HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["dbName"]));
DataSet ds = new DataSet(); public void dataBd()
{
OleDbDataAdapter da = new OleDbDataAdapter("select * from 信息表",conn);
conn.Open();
da.Fill(ds,"信息表");
conn.Close();
GridView1.DataSource = ds.Tables["信息表"];
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//此处要与不要都试过,未果
{
dataBd();
}
} protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string sqlStr = "update 信息表 set 姓名='" + GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Text + "' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
Button1.Text = sqlStr;
if (e.CommandName == "Edit")
{
GridView1.EditIndex = Convert.ToInt32(e.CommandArgument);
dataBd();
}
if (e.CommandName == "Update")
{
OleDbCommand comUd = new OleDbCommand(sqlStr, conn);
conn.Open();
comUd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
dataBd(); }
}
}总是将空值更新进数据库,每次都取不到值,已经困了我快一星期了,请指教!GridView我用自动绑定字段。
解决方案 »
- CS文件控制li问题
- rdlc报表多层钻取时返回
- 求下载图片、.txt 文件时不是直接打开;弹出打开保存的效果
- FileUpload1.SaveAs文件是空的
- 请问在新建一个website的时候,location选http的时候,右边应该设置为什么啊?
- DataGrid的删除问题
- ListBox的滚动显示问题???
- oledbdatareader,怎么调用其中某列的值?
- 为什么DataGrid里面的编辑,更新按扭要双击才触发?
- !!!快急死了,昨天捣鼓了半个晚上也没解决,"文件与流的操作问题"!!!
- treeview的checkbox问题?找了好几天了!
- GridView自定义分页中遇到的问题?(在线等啊)
結帖時接點分...只用過datagrid
//////////////////////////////
我看了,退出编辑前是空值!请帮帮我!
---------------------------------------------------------
点击编辑时取出的是原值,但点击更新时是空值!
{
int index = e.NewEditIndex;
GridViewRow row = GridView1.Rows[ index ];
string jobID = Server.HtmlDecode( row.Cells[ 3 ].Text ); }
还是取不出来,原来的单元格有值,不做任何改动,只要单击编辑,然后单击更新,值就没有了,看来问题肯定是sql语句的执行发生在页面刷新之后,页面一刷新,原来修改的值就没有了,于是sql就提交了空值到数据库。这到底怎样解决呢?
{
dataBd();
}
这可定要的
是过了,要与不要都不行。各位大虾能不能在你们的机子上帮我调一下,我快要疯了!十分感激!
{
if (e.CommandName == "Edit")
{
GridView1.EditIndex = Convert.ToInt32(e.CommandArgument);
dataBd();
}
if (e.CommandName == "Update")
{
string sqlStr = "update 信息表 set 姓名='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Controls[0]).Text + "' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();//问题出在这里
Button1.Text = sqlStr;
OleDbCommand comUd = new OleDbCommand(sqlStr, conn);
conn.Open();
comUd.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
dataBd();
}
}
还有,似乎if (e.CommandName == "Edit")
{
GridView1.EditIndex = Convert.ToInt32(e.CommandArgument);
dataBd();
}
里面需要dataBd()吗?这不是把gridview还原了吗?
在该事件中没有e.RowIndex,因为都是区当前行的位置,应该不影响;不用dataBd()绑定的话必须得点两次按钮才能激活编辑事件。
谢谢您能帮帮解答,请继续关注!
-----------------------------------------
to wengnet(西门吹雪)
我是选择自动填充字段的,这样会有影响吗?请明示!
-----------------------
我将您的提示改为两个字段时(如下)
sqlStr = "update 信息表 set 姓名='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Controls[0]).Text + "' and 学号='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Controls[0]).Text+"' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
--------------
就出现姓名字段更新为随机的0或-1,而不是我输入的值,这是怎么回事?请您继续帮我!请各位大虾继续关注!
对不起,刚才写错了,改正后还是老样子!以下是我的sql语句,为了排除中文影响,我把表名和字段改为拼音:
sqlStr = "update xxb set xh='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Controls[0]).Text + "' and xm='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Controls[0]).Text + "' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
sql语句写错了,应该是
------------
string sqlStr = "update xxb set xh='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Controls[0]).Text + "' , xm='" + ((TextBox)GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[3].Controls[0]).Text + "' where ID=" + GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();
------------
不知道为始末没报错!感谢Snowdust(雪尘) 、感谢wengnet(西门吹雪),感谢所有参与的人!真希望有一天,我也能有一颗红星星!
------------
结帐!