数据绑定后在GridView后怎么才能修改数据就是   user Search = new user();
                SqlDataReader myreader = Search.Login(sql);
                GridView1.DataSource = myreader;
                GridView1.DataBind();
            }
把数据直接绑定到GridView上,但是显示出来的数据不能编辑,高手赐教啊

解决方案 »

  1.   

    DataReader 是只读的,要想修改只能用DataSet
      

  2.   

    DataReader只是用来显示数据用的,而且只读向前,
    用DataSet和DataTable存储数据并修改吧
      

  3.   

    4楼说得对,应该换用DataSet或DataTable
    想在列表里进行修改的话,如果DataGrid控件的话,可以在“属性生成器”-〉“列”里面添加列的时候加入一组“编辑、更新、取消”的按钮比较方便。
      

  4.   

    顶一下,DataReader可以提高网页性能,但是在只读情况下使用,DataSet比较合适楼主的情况
      

  5.   

    谁有用 DropDownList+文本框搜索然后显示出来的代码啊。。要求搜索出来的内容前边后编辑按键或者点击内容可以编辑或者2个文本框,只输入一个就可以。要怎么判断
      

  6.   

    来自:http://www.cnblogs.com/dushouke/archive/2008/03/24/1120377.html
    前台代码:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div align="center">
        
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                CellPadding="4" ForeColor="#333333" GridLines="None" Height="285px" 
                onrowcancelingedit="GridView1_RowCancelingEdit" 
                onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 
                onrowupdating="GridView1_RowUpdating" Width="771px">
                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <Columns>
                    <asp:BoundField DataField="id" HeaderText="学号" />
                    <asp:BoundField DataField="name" HeaderText="姓名" />
                    <asp:BoundField DataField="sex" HeaderText="性别" />
                    <asp:BoundField DataField="age" HeaderText="年龄" />
                    <asp:BoundField DataField="department" HeaderText="专业" />
                    <asp:BoundField DataField="grade" HeaderText="班级" />
                    <asp:CommandField HeaderText="编辑 " ShowEditButton="True" />
                    <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
                    <asp:TemplateField HeaderText="删除 " ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                                CommandName="Delete" Text="删除" OnClientClick="return confirm('你确定要删除吗?')"></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <EditRowStyle BackColor="#999999" />
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            </asp:GridView>
        
        </div>
        </form>
    </body>
    </html>后台代码:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Data.SqlClient;public partial class Default5 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }    private void Bind()
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
            SqlDataAdapter adq = new SqlDataAdapter("select * from information", conn);
            DataSet dataset=new DataSet();
            adq.Fill(dataset,"information");
            GridView1.DataSource=dataset;
            GridView1.DataKeyNames=new String[]{"id"};
            GridView1.DataBind();
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            Bind();
        }
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
            SqlCommand comm = new SqlCommand("delete from information where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'",conn);
            conn.Open();
            try
            {
                int i = Convert.ToInt32(comm.ExecuteNonQuery());
                if (i > 0)
                {
                    Response.Write("<script language=javascript>alert('删除成功!')</script>");
                }
                else
                {
                    Response.Write("<script language=javascript>alert('删除失败!')</script>");
                }
                Bind();
            }
            catch (Exception erro)
            {
                Response.Write("错误信息:"+erro.Message);
            }
            finally
            {
                conn.Close();
            }
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string id = ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString().Trim();
            string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim();
            string sex = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim();
            string age= ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString().Trim();
            string department = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString().Trim();
            string grade = ((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString().Trim();
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Personal"].ConnectionString);
            SqlCommand comm = new SqlCommand("update information set id='"+id+"', name='"+name+"' , sex='"+sex+"' , age='"+age+"' , department='"+department+"' , grade='"+grade+"' where id='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'", conn);
            conn.Open();
            try
            {
                int i = Convert.ToInt32(comm.ExecuteNonQuery());
                if (i > 0)
                {
                    Response.Write("<script language=javascript>alert('保存成功!')</script>");
                }
                else
                {
                    Response.Write("<script language=javascript>alert('保存失败!')</script>");
                }
                GridView1.EditIndex = -1;
                Bind();
            }
            catch (Exception erro)
            {
                Response.Write("错误信息:" + erro.Message);
            }
            finally
            {
                conn.Close();
            }
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            Bind();
        }
    }