下面的C#代码使用了gridview控件,为什么单击编辑数据要 单击两次,为什么单击更新数据之后页面任然处于编
下面的C#代码使用了gridview控件,为什么单击编辑数据要单击两次,为什么单击更新数据之后页面任然处于编辑状态。(数据处理函数mysqlclassEmpPurse=n...
下面的C#代码使用了gridview控件,为什么单击编辑数据要
单击两次,为什么单击更新数据之后页面任然处于编辑状态
。(数据处理函数mysqlclass EmpPurse = new
mysqlclass(tablename)以及他的方法经过各种测试是没有
问题的。其中GetTable方法是获取你想要的表,返回一个数
据集,SetTable方法是更新数据库里面的数据,返回收影响
的行数)
源码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender,
EventArgs e)
{
if (!IsPostBack)
{
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
}
}
protected void GridView1_RowUpdating(object
sender, GridViewUpdateEventArgs e)
{
ArrayList listname = new ArrayList();
int countcoln = 0;
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
foreach (DataColumn col in data.Tables
["t1"].Columns)
{
if (col.ColumnName.ToString() != "ID")
{
listname.Add
(col.ColumnName.ToString());
countcoln++;
}
}
Response.Write("countcoln" + countcoln);
mysqlclass upsql = new mysqlclass
("EmpPurse1");
int i;
string sqlif="ID=5";
ArrayList listvalue=new ArrayList();
for(int n=0;n<countcoln;n++)
{
listvalue.Add(e.NewValues[n].ToString
());
}
Response.Write("#");
Response.Write("##countcoln"+countcoln);
i=upsql.SetTable(listname,listvalue,sqlif);
Response.Write("受影响的行数"+i);
GridView1.EditIndex = -1;
}
protected void GridView1_RowCancelingEdit
(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
}
protected void GridView1_RowUpdated(object
sender, GridViewUpdatedEventArgs e)
{
GridView1.EditIndex = -1;
}
protected void GridView1_RowEditing(object
sender, GridViewEditEventArgs e)
{
}
}
希望好心人能帮我看看,1.如何让我单击编辑按钮时,文本
框里面有数据,而不是想图中那样,单击编辑后什么都要自
己重新写入(主要是想知道在gridview的那个事件中写代码
)2.为什么在页面上要单击编辑两次后才能进入编辑状态。
3.为什么编辑后单击更新,虽然处理了数据,但页面还是处
于编辑状态。
一定请看了图片后再回答,这里的问题很明显。如能解决,
万分感谢。
附上页面源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<!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" AllowSorting="True"
AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataKeyNames="ID"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing" onrowupdated="GridView1_RowUpdated"
onrowupdating="GridView1_RowUpdating">
</asp:GridView>
</form>
</body>
</html> 展开
单击两次,为什么单击更新数据之后页面任然处于编辑状态
。(数据处理函数mysqlclass EmpPurse = new
mysqlclass(tablename)以及他的方法经过各种测试是没有
问题的。其中GetTable方法是获取你想要的表,返回一个数
据集,SetTable方法是更新数据库里面的数据,返回收影响
的行数)
源码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender,
EventArgs e)
{
if (!IsPostBack)
{
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
}
}
protected void GridView1_RowUpdating(object
sender, GridViewUpdateEventArgs e)
{
ArrayList listname = new ArrayList();
int countcoln = 0;
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
foreach (DataColumn col in data.Tables
["t1"].Columns)
{
if (col.ColumnName.ToString() != "ID")
{
listname.Add
(col.ColumnName.ToString());
countcoln++;
}
}
Response.Write("countcoln" + countcoln);
mysqlclass upsql = new mysqlclass
("EmpPurse1");
int i;
string sqlif="ID=5";
ArrayList listvalue=new ArrayList();
for(int n=0;n<countcoln;n++)
{
listvalue.Add(e.NewValues[n].ToString
());
}
Response.Write("#");
Response.Write("##countcoln"+countcoln);
i=upsql.SetTable(listname,listvalue,sqlif);
Response.Write("受影响的行数"+i);
GridView1.EditIndex = -1;
}
protected void GridView1_RowCancelingEdit
(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
}
protected void GridView1_RowUpdated(object
sender, GridViewUpdatedEventArgs e)
{
GridView1.EditIndex = -1;
}
protected void GridView1_RowEditing(object
sender, GridViewEditEventArgs e)
{
}
}
希望好心人能帮我看看,1.如何让我单击编辑按钮时,文本
框里面有数据,而不是想图中那样,单击编辑后什么都要自
己重新写入(主要是想知道在gridview的那个事件中写代码
)2.为什么在页面上要单击编辑两次后才能进入编辑状态。
3.为什么编辑后单击更新,虽然处理了数据,但页面还是处
于编辑状态。
一定请看了图片后再回答,这里的问题很明显。如能解决,
万分感谢。
附上页面源码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<!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" AllowSorting="True"
AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataKeyNames="ID"
onrowcancelingedit="GridView1_RowCancelingEdit"
onrowediting="GridView1_RowEditing" onrowupdated="GridView1_RowUpdated"
onrowupdating="GridView1_RowUpdating">
</asp:GridView>
</form>
</body>
</html> 展开
3个回答
展开全部
我不当好人;只求你的分数;
1.如何让我单击编辑按钮时,文本框里面有数据,而不是想图中那样,单击编辑 后什么都要自己重新写入(主要是想知道在gridview的那个事件中写代码)
答:要想某行点击编辑之后文本框默认出现数据,必须在GirdView添加行绑定模板如:
<columns <asp:TemplateColumn >
<EditItemTemplate >
<asp:TextBox ID="txtName" runat ="server" Text ='<%#Eval("字段名称") % >'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>></columns>
而不是就一个单纯的GridView
2.为什么在页面上要单击编辑两次后才能进入编辑状态。
你使用了 AutoGenerateEditButton="True" 自带的编辑按钮,它的机制是相当于一个服务器控件,要起到回发的作用,解决的办法就是在isposback底下写上你的代码 或者你不要用AutoGenerateEditButton="True" 直接在gridview里面有一个编辑行的事件底下写代码也可以;不会出现点两次
具体代码:
GridView1.EditItemIndex = e.newindex; //此处e.newindex 这个e.后面是需要的行索引,具体单词忘记写了,你可以点出来看得到跟new有关的一个单词
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
3.为什么编辑后单击更新,虽然处理了数据,但页面还是处于编辑状态。
你在最后写完更新代码之后也要加上
GridView1.EditIndex = -1;
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
祝你成功!
1.如何让我单击编辑按钮时,文本框里面有数据,而不是想图中那样,单击编辑 后什么都要自己重新写入(主要是想知道在gridview的那个事件中写代码)
答:要想某行点击编辑之后文本框默认出现数据,必须在GirdView添加行绑定模板如:
<columns <asp:TemplateColumn >
<EditItemTemplate >
<asp:TextBox ID="txtName" runat ="server" Text ='<%#Eval("字段名称") % >'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>></columns>
而不是就一个单纯的GridView
2.为什么在页面上要单击编辑两次后才能进入编辑状态。
你使用了 AutoGenerateEditButton="True" 自带的编辑按钮,它的机制是相当于一个服务器控件,要起到回发的作用,解决的办法就是在isposback底下写上你的代码 或者你不要用AutoGenerateEditButton="True" 直接在gridview里面有一个编辑行的事件底下写代码也可以;不会出现点两次
具体代码:
GridView1.EditItemIndex = e.newindex; //此处e.newindex 这个e.后面是需要的行索引,具体单词忘记写了,你可以点出来看得到跟new有关的一个单词
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
3.为什么编辑后单击更新,虽然处理了数据,但页面还是处于编辑状态。
你在最后写完更新代码之后也要加上
GridView1.EditIndex = -1;
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
祝你成功!
追问
1.如何让我单击编辑按钮时,文本框里面有数据,而不是想图中那样,单击编辑 后什么都要自己重新写入:这里你说的是已经知道字段名的方法吧?我希望设定字段名为数据源字段名。就是说。我现在只知道数据库中的一个表的名字,要绑定到gridview中。所及具体哪个字段我是不知道的,只是在查询后自动依次绑定。这个怎么绑定呢?
2..我在 GridView1_RowUpdating里面执行的数据更新方法。在末尾已经有了GridView1.EditIndex = -1;?
追答
1,如果你要点击编辑之后要出现数据的话,就得加个绑定模版;因为你想过没有更新的时候,你得具体拿出更新的某个值,你不加的话你怎么取出它更新的值?还有你要实现这种效果还得把显示行模版的值放到编辑模版上,这是一件很复杂的事情;你既然可以绑定出来数据,就一定知道表中具体的字段;
2,你虽然最后加了GridView1.EditIndex = -1;但是你没有重新绑定一次
string tablename = "EmpPurse1";
DataSet data = new DataSet();
mysqlclass EmpPurse = new mysqlclass
(tablename);
data = EmpPurse.GetTable();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
等于教你怎么用这个控件了
展开全部
你最好能把你的整个程序发过来,然后方便调试,我还可以在自己的客户端上运行下,看是哪里问题。个人简介有我Q,加我。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在editing和updating里面重新bind()一下就行了
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
GridView1.DataSource = data.Tables
["t1"];
GridView1.DataBind();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询