读书人

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

发布时间: 2012-02-13 17:20:26 作者: rapoo

百思不得其解,忘高手帮忙看看
我就是实现一个简单的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跟数据库中对比。主键相同把该更新的数据更新回去,主键不存在的则删除数据库中对应数据,但是程序消耗比前一种大。。。
[解决办法]

如需要阅读该回复,请登录或注册CSDN!


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

读书人网 >asp.net

热点推荐