编辑DataGrid控件(一)

来源:互联网 发布:淘宝退款不退货可以吗 编辑:程序博客网 时间:2024/05/17 04:10
在DataGrid中任何位置添加<asp:EditCommandColumn></ asp:EditCommandColumn>就可以进行就地编辑,其中可以在EditCommandColumn中设置EditText,CancelText和UpdateText等属性,就可以对DataGird进行就地编辑了。

  我们以SQL Server2000中自带的数据库Northwind中表Employees为例。

  下面为能就地编辑的DataGrid控件:

 

  Edit.aspx:
  <asp:DataGrid Runat="server" CellPadding="2" CellSpacing="0" id="DataGrid1" Font-Name="Verdana"
 Font-Size="x-small" AutoGenerateColumns="False" BorderColor="black" BorderStyle="Solid" BorderWidth="1px"
 DataKeyField="EmployeeID">
  <HeaderStyle BackColor="brown" />
  <AlternatingItemStyle BackColor="palegoldenrod" />
  <ItemStyle BackColor="beige"></ItemStyle>
  <Columns>
    <asp:BoundColumn DataField="EmployeeID" HeaderText="ID" ReadOnly="True">
        <ItemStyle BackColor="lightblue" />
    </asp:BoundColumn>
    <asp:TemplateColumn HeaderText="Employee Name">
        <ItemTemplate>
   <%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")+"<b>"+
    DataBinder.Eval(Container.DataItem,"FirstName")+"</b>"+
    DataBinder.Eval(Container.DataItem,"LastName")%>
 </ItemTemplate>
   </asp:TemplateColumn>
   <asp:BoundColumn DataField="title" HeaderText="Position" />
   <asp:BoundColumn DataField="Country" HeaderText="From" />
   <asp:EditCommandColumn CancelText="Cancel" EditText="Edit" UpdateText="Update" ButtonType="LinkButton">      
   </asp:EditCommandColumn>
  </Columns>
</asp:DataGrid>


Edit.aspx.cs
 private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if (!Page.IsPostBack)
   {
    UpdateView();
   }
  }

  private void UpdateView()
  {
   SqlConnection myconn=new SqlConnection("DATABASE=Northwind;SERVER=localhost;UID=sa;PWD=;");
   string strsql="SELECT employeeid, titleofcourtesy, firstname, lastname, title, country FROM Employees";
   SqlDataAdapter da=new SqlDataAdapter(strsql,myconn);
   DataSet ds=new DataSet();
   da.Fill(ds,"MyTable");
   DataGrid1.DataSource=ds.Tables["MyTable"];
   DataGrid1.DataBind();
  }

private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   DataGrid1.EditItemIndex=-1;
   UpdateView();
  }

  private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   DataGrid1.EditItemIndex=e.Item.ItemIndex;
   UpdateView();
  }

  private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   int iPostion=2;
   int iFrom=3;
   TextBox txtPostion=(TextBox)e.Item.Cells[iPostion].Controls[0];
   TextBox txtFrom=(TextBox)e.Item.Cells[iFrom].Controls[0];

   StringBuilder sb=new StringBuilder();
   sb.Append("Update Employees set ");
   sb.Append("Title=@Title,Country=@Country ");
   sb.Append("where EmployeeID=@EmployeeID ");
            SqlConnection myconn=new SqlConnection("DATABASE=Northwind;SERVER=localhost;UID=sa;PWD=;");
   SqlCommand cmd=new SqlCommand(sb.ToString(),myconn);

   SqlParameter p1=new SqlParameter("@EmployeeID",SqlDbType.Int);
   p1.Direction=ParameterDirection.Input;
   p1.Value=DataGrid1.DataKeys[e.Item.ItemIndex];
   cmd.Parameters.Add(p1);

   SqlParameter p2=new SqlParameter("@Title",SqlDbType.NVarChar,30);
   p2.Direction=ParameterDirection.Input;
   p2.Value=txtPostion.Text;
   cmd.Parameters.Add(p2);
           
   SqlParameter p3=new SqlParameter("@Country",SqlDbType.NVarChar,15);
   p3.Direction=ParameterDirection.Input;
   p3.Value=txtFrom.Text;
   cmd.Parameters.Add(p3);

   myconn.Open();
   cmd.ExecuteNonQuery();
   myconn.Close();
           
   DataGrid1.EditItemIndex=-1;
   UpdateView();   
  }
 

 如果你想把界面搞得花俏一些的话,可以用图片来代替文字。