首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

百思不得其解,忘高手帮忙看看,该如何解决

2012-02-13 
百思不得其解,忘高手帮忙看看我就是实现一个简单的gridview编辑功能,在网上看了很多都是这样写的,不知道为

百思不得其解,忘高手帮忙看看
我就是实现一个简单的gridview编辑功能,在网上看了很多都是这样写的,不知道为什么我点更新之后根本没有修改成功,追踪((TextBox)(row.Cells[1].Controls[0])).Text值没有变化。请高手指点一下,谢谢!
aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Basic_test" %>

<!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">
<asp:GridView ID="GridView1" runat="server" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
  OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="price_no" HeaderText="价格单号" SortExpression="价格单号"/>
<asp:BoundField DataField="wgt_prc" HeaderText="单价" SortExpression="单价" />
  <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
  <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
  </form>
</body>
</html>
CS代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
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.Xml.Linq;

public partial class Basic_test : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {

  //初始化界面
  initcomponent();
  }
  void initcomponent()
  {
  DataTable dt = BLL.Face.saleprice().Tables[0];//得到一个table的,没有问题
  Session["TaskTable"] = dt;
  BindData();
  }
  protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
  {
  GridView1.EditIndex = e.NewEditIndex;
  BindData();
  }
  //删除
  protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
  {
  BLL.SalePrice.Delete(Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value));
  }
  //更新
  protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
  {
  DataTable dt = (DataTable)Session["TaskTable"];

  //Update the values.
  GridViewRow row = GridView1.Rows[e.RowIndex];
  dt.Rows[GridView1.EditIndex]["wgt_prc"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
  //Reset the edit index.
  GridView1.EditIndex = -1;

  //Bind data to the GridView control.
  BindData();
  }
  //取消
  protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
  {
  GridView1.EditIndex = -1;
  BindData();
  }
  private void BindData()
  {
  GridView1.DataSource = Session["TaskTable"];
  GridView1.DataBind();
  }


}


[解决办法]

探讨
追加一个问题啊,不然不好给大家分:
我更新过的datatble怎么把数据更新到数据库啊?

[解决办法]
最简单的方法。。把原来绑定到gridview的数据库数据全清空。。再把session中的datatable全部保存回数据库,这样无论你在页面上是做了更新还是做了删除操作,保存回数据库的数据一定跟你界面上现实的一样。。。但是存在危险,一般不提倡这么做。
建议通过主键循环编列session中的datatable跟数据库中对比。主键相同把该更新的数据更新回去,主键不存在的则删除数据库中对应数据,但是程序消耗比前一种大。。。
[解决办法]

[解决办法]
15楼说的对,在容器中处理控件,对控件进行操作,会用到findcontrol这个方法的,这一点要记着

热点排行