ObjectDataSource绑定gridview的问题,不知道是不是一个bug
在数据集中拖了一个TableAdapter,对一个表进行select * from xxx的查询,然后下一步,下一步,完成在页面中拖放一个ObjectDataSource和gridview,将前者的数据源设为之前配置的TableAdapter,将gridview的数据源配置为ObjectDataSource1.
选中允许编辑,再选择“编辑列”,选中某个不允许空的列,设置readonly属性为TRUE
然后再在浏览器打开该页面,选择编辑->更新,此时就会出错,说xx值不允许为空
试过多次了,不知道怎么回事,是不是一个bug?
03的时候,好像是获取只读列的方法不同,然后将获取值与其他值一起写到update的参数里去。05这个版本,封装好了,不知道是怎么实现update的。
按理说在我设置某列只读的时候,就应该在update时,去用该列的未编辑状态的值就行了,可是好像它不是这么做的,老说xx不允许为空 --------------------编程问答-------------------- 个人建议,不提议用ObjectDataSource这种方式绑定,可以按照03的那种方式绑定啊!~只不过有的方法变了名而已,可以试试!~
== --------------------编程问答--------------------
--------------------编程问答-------------------- 增删改查都有了,自己研究下吧 --------------------编程问答-------------------- 以前我就是用03的,也实现了上述所说的功能。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.filldatatodatagrid();
}
}
public void filldatatodatagrid()
{
connection c = new connection();
this.GridView1.DataSource = c.gettable();
this.GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
connection c = new connection();
DataTable dt = connection.select("select * from ly");
if (dt.Rows.Count > 0)
{
c.nr = this.TextBox1.Text;
c.insert();
this.filldatatodatagrid();
}
else
{
this.Response.Write("<script language=JavaScript>alert(\"提示信息\")</script>");
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
this.filldatatodatagrid();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
connection c = new connection();
c.lyid = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
Response.Write("<script language=javascript>alert('确定要删除该信息?');</script>");
if ( c.delete()=="ok")
{
this.filldatatodatagrid();
}
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
connection c = new connection();
c.lyid = this.GridView1.DataKeys[e.RowIndex].Value.ToString();
c.username = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
c.nr = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text .ToString();
((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text="";
if (c.update() == "ok")
{
this.filldatatodatagrid();
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
this.GridView1.EditIndex = e.NewEditIndex;
this.filldatatodatagrid();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.GridView1.EditIndex = -1;
this.filldatatodatagrid();
}
只是05用ods的话,可以不用写数据库操作代码,想省事嘛。结果这东西不知道怎么回事不会获取编辑状态下的cell的值,就认为它是空,所以出错
补充:.NET技术 , ASP.NET