protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            databind();
        }
    }    public void databind()//绑定GridView
    {
        DataTable dt = new DataTable();
        string sql = "select * from x_link";
        dt = sqlhelper.GetTable(sql);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)//GridView编辑事件
    {
        GridView1.EditIndex = e.NewEditIndex;
        databind();
    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)//GridView取消编辑事件
    {
        GridView1.EditIndex = -1;
        databind();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)//GridView更新事件
    {
        int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
        string name = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString();
        string url = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
        string sql = "update x_link set x_lname=@name,x_lurl=@url where id=" + id;
        SqlParameter[] paras = new SqlParameter[]{
            new SqlParameter("@name",name),
            new SqlParameter("@url",url)
        };
        sqlhelper.ExecuteQuery(sql, paras, CommandType.Text);
        Response.Redirect("~/article.aspx?tab=4");
    }

解决方案 »

  1.   

    有用到母版面?你查看HTML源代码,看是否参找到两个以上的form,而且两个是嵌套在一起的
      

  2.   

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="link.ascx.cs" Inherits="control_link" %>
    <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" 
        AutoGenerateColumns="False" onrowcancelingedit="GridView1_RowCancelingEdit" 
        onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" 
        BorderWidth="0px" CellSpacing="20" GridLines="None">
        <RowStyle Font-Size="15px" Height="50px" HorizontalAlign="Center" Width="200px" 
            VerticalAlign="Middle" />
        <Columns>
            <asp:BoundField DataField="x_lname" HeaderText="网站名称" />
            <asp:BoundField DataField="x_lurl" HeaderText="网站网址" />
            <asp:CommandField ShowEditButton="True" />
        </Columns></asp:GridView>
      

  3.   

    下面是引用用户控件的主页面的源代码 
     
    <!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><title>
    博客--文章管理
    </title><link href="css/master.css" rel="stylesheet" type="text/css" media="screen" /><link href="css/article.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form name="aspnetForm" method="post" action="article.aspx?tab=4" id="aspnetForm">
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" id="
    __VIEWSTATE" value="" />
    </div>
     
    <script type="text/javascript"> 
    //<![CDATA[
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
        theForm = document.aspnetForm;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>
     
     
    <div>
     
    <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="SDqJyk5tjZEsiA0WzAS3Lkn74SEbLfcMqMjbAo5DBKqoYZ0hUhqfs0EZVf7f58oXX150b6uh9pkyJ+bvBGz0MIpMG1iVzTvVWzhdrO9bvJHYnvygip8FlsDD8rh5kE5gEMxMjw==" />
    </div>
        <div>
        <div id="wrapper">
    <div id="header-wrapper">
    <div id="header">
    <div id="logo">
    <h2 style="font-size:2.4em"><a href="#">No Impossible  </a></h2>
    </div>
    <div id="menu">
    <ul>
    <li class="current_page_item"><a href="index.aspx">首页</a></li>
    <li><a href="articallist.aspx?id=1">文章</a></li>
    <li><a href="#">相册</a></li>
    <li><a href="#">留言</a></li>
    <li><a href="#">关于我们</a></li>
    </ul>
    </div>
    </div>
    </div>
    <!-- end #header -->
    <div id="page">
    <div id="page-bgtop">
    <div id="page-bgbtm">
                <div id="sidebar">
    <div class="left">
    <ul>
    <li><span><b>基本信息</b></span></li>
    <li><img src="images/none.jpg" border="0" width="100px" height="100px" /></li>
    <li>用户名:111</li>
    <li>最新回复: <a href="#">2</a></li>
    <li>注册时间:2011-6-20 10:40:41</li>
    <li>上次登录: 2011-6-21 22:52:16</li>
    </ul>
    </div>
    <br />       
    <div class="left">
    <ul>
    <li><span><b>设置</b></span></li>
    <li><a href="Default.aspx">个人信息</a></li>
    <li><a href="article.aspx">文章管理</a></li>
    <li><a href="#">回复管理</a></li>
    <li><a href="article.aspx?tab=4">链接管理</a></li>
    <li><a href="#">说说</a></li>
    <li><a href="#">消息管理</a></li>
    </ul>
    </div>
     
              </div>
                
    <!-- end #sidebar -->
    <div id="content">

     
    <div id="mycontent">
            <div class="Tab menuTab">
                <ul class="Tabs" style="font-size:12px;">
                    <span id="ctl00_ContentPlaceHolder1_MenuTabLabel"><li class=TabOut id=tab1  style='display:'><a  href=/blog/article.aspx?tab=1>发表文章</a> </li><li class=TabOut id=tab2  style='display:'><a  href=/blog/article.aspx?tab=2>编辑文章</a> </li><li class=TabOut id=tab3  style='display:'><a  href=/blog/article.aspx?tab=3>文章管理</a> </li><li class=TabIn id=tab4 style='display:'><a>链接管理</a> </li></span>
                </ul>
            </div>
            <div class="clear">
            </div>
            <div id="rightWrapper">
                <div id="container">
                    <div>
    <table cellspacing="20" border="0" id="ctl00_ContentPlaceHolder1_ctl00_GridView1" style="border-width:0px;">
    <tr>
    <th scope="col">网站名称</th><th scope="col">网站网址</th><th scope="col">&nbsp;</th>
    </tr><tr align="center" valign="middle" style="font-size:15px;height:50px;width:200px;">
    <td>51aspx</td><td>http://www.51aspx.com/</td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridView1','Edit$0')">编辑</a></td>
    </tr><tr align="center" valign="middle" style="font-size:15px;height:50px;width:200px;">
    <td>博客园</td><td>http://www.cnblogs.com/</td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridView1','Edit$1')">编辑</a></td>
    </tr><tr align="center" valign="middle" style="font-size:15px;height:50px;width:200px;">
    <td>We 7</td><td>http://www.westengine.com/</td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridView1','Edit$2')">编辑</a></td>
    </tr><tr align="center" valign="middle" style="font-size:15px;height:50px;width:200px;">
    <td>CSDN</td><td>http://www.csdn.net/</td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridView1','Edit$3')">编辑</a></td>
    </tr><tr align="center" valign="middle" style="font-size:15px;height:50px;width:200px;">
    <td>CSS+DIV</td><td>http://www.freecsstemplates.org/</td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl00$GridView1','Edit$4')">编辑</a></td>
    </tr>
    </table>
    </div>
     
                </div>
            </div>
        </div>
     

    <div style="clear: both;">&nbsp;</div>
    </div>
    <!-- end #content -->

    <div style="clear: both;">&nbsp;</div>
    </div>
    </div>
    </div>
    <!-- end #page -->
    </div>
    <br />
    <br />
    <br />
    <div id="footer">
    <p>Copyright (c) 2008  All rights reserved. Design by 晓车</p>
    </div>
           
        </div>
        </form>
    </body>
    </html>
      

  4.   

    我的整体布局是这样的,article.aspx 代码贴上<%@ Page Title="博客--文章管理" Language="C#" MasterPageFile="~/master/manage.master" AutoEventWireup="true" CodeFile="article.aspx.cs" Inherits="article" %><asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="mycontent">
            <div class="Tab menuTab">
                <ul class="Tabs" style="font-size:12px;">
                    <asp:Label runat="server" ID="MenuTabLabel"></asp:Label>
                </ul>
            </div>
            <div class="clear">
            </div>
            <div id="rightWrapper">
                <div id="container">
                    <asp:PlaceHolder runat="server" ID="ContentHolder"></asp:PlaceHolder>
                </div>
            </div>
        </div>
    </asp:Content>
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;public partial class article : XViewStateFilesPage
    {
        public string TabID
        {
            get { return Request["tab"]; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            MenuTabLabel.Text = BuildNavString();
        }    public string BuildNavString()
        {
            string strActive = @"<li class=TabIn id=tab{0} style='display:{2}'><a>{1}</a> </li>";
            string strLink = @"<li class=TabOut id=tab{0}  style='display:{2}'><a  href={3}>{1}</a> </li>";
            int tab = 1;
            string tabString = "";
            string dispay = "";
            string rawurl = RemoveParamFromUrl(Request.RawUrl, "tab");        if (TabID != null && IsNumber(TabID))
                tab = int.Parse(TabID);        if (tab == 1)
            {
                tabString += string.Format(strActive, 1, "发表文章", dispay);
                Control ctl = this.LoadControl("~/control/article.ascx");
                ContentHolder.Controls.Clear();
                ContentHolder.Controls.Add(ctl);
            }
            else
                tabString += string.Format(strLink, 1, "发表文章", dispay, AddParamToUrl(rawurl, "tab", "1"));
            if (tab == 2)
            {
                tabString += string.Format(strActive, 2, "编辑文章", dispay);
                Control ct2 = this.LoadControl("~/control/article.ascx");
                ContentHolder.Controls.Clear();
                ContentHolder.Controls.Add(ct2);
            }
            else
                tabString += string.Format(strLink, 2, "编辑文章", dispay, AddParamToUrl(rawurl, "tab", "2"));        if (tab == 3)
            {
                tabString += string.Format(strActive, 3, "文章管理", dispay);
                Control ct3 = this.LoadControl("~/control/deletearticle.ascx");
                ContentHolder.Controls.Clear();
                ContentHolder.Controls.Add(ct3);
            }
            else
                tabString += string.Format(strLink, 3, "文章管理", dispay, AddParamToUrl(rawurl, "tab", "3"));        if (tab == 4)
            {
                tabString += string.Format(strActive, 4, "链接管理", dispay);
                Control ct4 = this.LoadControl("~/control/link.ascx");
                ContentHolder.Controls.Clear();
                ContentHolder.Controls.Add(ct4);
            }
            else
                tabString += string.Format(strLink, 4, "链接管理", dispay, AddParamToUrl(rawurl, "tab", "4"));
            return tabString;
        }
      

  6.   

    article.aspx里面有个<asp:PlaceHolder runat="server" ID="ContentHolder"></asp:PlaceHolder>这个家伙加载link.ascx,就是gridview的那个用户控件上面有源代码
      

  7.   

    假设你们有源代码管理系统的支持的话,看看当前的版本是否提交,然后——删除代码吧!bug的位置可以通过正快地删除代码,自己更快地定位的。实际上我使用测试驱动方式,如果亦步亦趋、一边测试一遍遍写代码,你的这种情况是不会出现的。因为有什么细微的bug,其它测试程序立刻就将bug定位出来了。不用等到整个程序不行了,才发现问题。
      

  8.   

    XViewStateFilesPage
    是把viewstate写在服务器端的类,你们看见了吧 article.aspx里面调用了4个用户控件,其中就包括link.ascx,但是其他三个控件都起作用了,不论自动回发,删除,添加,都执行了,就到这个gridview的用户控件link.ascx就不起作用了,纠结啊
      

  9.   

    form 是在母版页里面 
    代码<%@ Master Language="C#" AutoEventWireup="true" CodeFile="manage.master.cs" Inherits="master_manage" %><!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>
    <link href="../css/master.css" rel="stylesheet" type="text/css" media="screen" />
        <link href="../css/article.css" rel="stylesheet" type="text/css" />
        
        <asp:ContentPlaceHolder id="head" runat="server">
     
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <div id="wrapper">
    <div id="header-wrapper">
    <div id="header">
    <div id="logo">
    <h2 style="font-size:2.4em"><a href="#">No Impossible  </a></h2>
    </div>
    <div id="menu">
    <ul>
    <li class="current_page_item"><a href="index.aspx">首页</a></li>
    <li><a href="articallist.aspx?id=1">文章</a></li>
    <li><a href="#">相册</a></li>
    <li><a href="#">留言</a></li>
    <li><a href="#">关于我们</a></li>
    </ul>
    </div>
    </div>
    </div>
    <!-- end #header -->
    <div id="page">
    <div id="page-bgtop">
    <div id="page-bgbtm">
                <div id="sidebar">
    <div class="left">
    <ul>
    <li><span><b>基本信息</b></span></li>
    <li><img src="images/none.jpg" border="0" width="100px" height="100px" /></li>
    <li>用户名:<%=dt.Rows[0]["x_uname"].ToString() %></li>
    <li>最新回复: <a href="#">2</a></li>
    <li>注册时间:<%=dt.Rows[0]["x_time"].ToString()%></li>
    <li>上次登录: <%=dt.Rows[0]["lastlogin"].ToString()%></li>
    </ul>
    </div>
    <br />       
    <div class="left">
    <ul>
    <li><span><b>设置</b></span></li>
    <li><a href="Default.aspx">个人信息</a></li>
    <li><a href="article.aspx">文章管理</a></li>
    <li><a href="#">回复管理</a></li>
    <li><a href="article.aspx?tab=4">链接管理</a></li>
    <li><a href="#">说说</a></li>
    <li><a href="#">消息管理</a></li>
    </ul>
    </div>          </div>
                
    <!-- end #sidebar -->
    <div id="content">

     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
           
            </asp:ContentPlaceHolder>

    <div style="clear: both;">&nbsp;</div>
    </div>
    <!-- end #content -->

    <div style="clear: both;">&nbsp;</div>
    </div>
    </div>
    </div>
    <!-- end #page -->
    </div>
    <br />
    <br />
    <br />
    <div id="footer">
    <p>Copyright (c) 2008  All rights reserved. Design by 晓车</p>
    </div>
           
        </div>
        </form>
    </body>
    </html>
      

  10.   

            if (!IsPostBack)
            {
                databind();
            }
    改成:   
                databind();
       试试看
      

  11.   

    对于这个问题已经有答案了,是我再服务器段保存viewstate的事情不在服务器端保存viewstate的话,是不会出错的,aritcle.apsx采用母版页,然后后台动态加载4个控件,经测试,来回切换的话,会出现与上一控件树师徒不一样的情况,并且 gridview编辑事件起作用,更新取消事件不起作用,目前我对viewsate懂得不是很多,希望以后能把这个问题解决了,这个页面是后台页面,viewstate不是很大,暂且保留,期待以后解决