none
GridView的一个问题? RRS feed

  • 问题

  • GridView最后一列有一个名为 续借 的按钮,点击后去掉Button然后就在该单元显示 续借成功!
     请问我该怎么实现??

    2009年12月7日 2:38

答案

  • 这个问题与你上一个问题有点相似,做了个示例你参考下:

    <%@ Page Language="C#" AutoEventWireup="true"%>
    <%@ Import Namespace="System.Data" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Col1", typeof(Guid));
                while (dt.Rows.Count < 10)
                    dt.Rows.Add(new object[] { Guid.NewGuid() });
    
                this.GridView1.DataSource = dt;
                this.GridView1.DataBind();
            }
        }
    
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Command1")
            {
                GridViewRow gridViewRow = (GridViewRow)((Control)e.CommandSource).NamingContainer;
                gridViewRow.Cells[1].Text = "继借成功";
            }
        }
    </script>
    <!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">
        <div>
            <asp:GridView ID="GridView1" runat="server" onrowcommand="GridView1_RowCommand" 
                AutoGenerateColumns="False">
              <Columns>
                    <asp:BoundField DataField="Col1" HeaderText="Col1" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="Button1" CommandName="Command1" runat="server" Text="继借"  />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    


    知识改变命运,奋斗成就人生!
    2009年12月7日 2:52
    版主

全部回复

  • 这个问题与你上一个问题有点相似,做了个示例你参考下:

    <%@ Page Language="C#" AutoEventWireup="true"%>
    <%@ Import Namespace="System.Data" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Col1", typeof(Guid));
                while (dt.Rows.Count < 10)
                    dt.Rows.Add(new object[] { Guid.NewGuid() });
    
                this.GridView1.DataSource = dt;
                this.GridView1.DataBind();
            }
        }
    
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Command1")
            {
                GridViewRow gridViewRow = (GridViewRow)((Control)e.CommandSource).NamingContainer;
                gridViewRow.Cells[1].Text = "继借成功";
            }
        }
    </script>
    <!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">
        <div>
            <asp:GridView ID="GridView1" runat="server" onrowcommand="GridView1_RowCommand" 
                AutoGenerateColumns="False">
              <Columns>
                    <asp:BoundField DataField="Col1" HeaderText="Col1" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="Button1" CommandName="Command1" runat="server" Text="继借"  />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
    


    知识改变命运,奋斗成就人生!
    2009年12月7日 2:52
    版主
  • 谢谢,如果我把<script runat="server"></script>写在后台行吗?这种写法我没用过。

    2009年12月7日 3:00
  • 是可以的,我是为了你看着方面和Copy方便所以写到一个文件里了。你将后台代码考到 .cs 文件中就可以了。
    知识改变命运,奋斗成就人生!
    2009年12月7日 3:02
    版主
  • 不好意思再打扰一下  GridViewRow gridViewRow = (GridViewRow)((Control)e.CommandSource).NamingContainer;
    这句什么意思?就是去掉Button?

    2009年12月7日 3:09
  • 不是!是得到事件引发按钮所在的行。

    gridViewRow.Cells[1].Text = "续借成功";

    上面这句才是去掉按钮并赋上文本。

    更详细的信息你可以看看你上一个问题中我给你的示例地址。



    知识改变命运,奋斗成就人生!
    2009年12月7日 3:12
    版主