当前位置:编程学习 > C#/ASP.NET >>

ObjectDataSource绑定gridview的问题,不知道是不是一个bug

在数据集中拖了一个TableAdapter,对一个表进行select * from xxx的查询,然后下一步,下一步,完成
在页面中拖放一个ObjectDataSource和gridview,将前者的数据源设为之前配置的TableAdapter,将gridview的数据源配置为ObjectDataSource1.
选中允许编辑,再选择“编辑列”,选中某个不允许空的列,设置readonly属性为TRUE
然后再在浏览器打开该页面,选择编辑->更新,此时就会出错,说xx值不允许为空

试过多次了,不知道怎么回事,是不是一个bug?
03的时候,好像是获取只读列的方法不同,然后将获取值与其他值一起写到update的参数里去。05这个版本,封装好了,不知道是怎么实现update的。
按理说在我设置某列只读的时候,就应该在update时,去用该列的未编辑状态的值就行了,可是好像它不是这么做的,老说xx不允许为空 --------------------编程问答-------------------- 个人建议,不提议用ObjectDataSource这种方式绑定,可以按照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();
    }
--------------------编程问答-------------------- 增删改查都有了,自己研究下吧 --------------------编程问答-------------------- 以前我就是用03的,也实现了上述所说的功能。
只是05用ods的话,可以不用写数据库操作代码,想省事嘛。结果这东西不知道怎么回事不会获取编辑状态下的cell的值,就认为它是空,所以出错
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,