对于下面的代码
<asp:TemplateColumn HeaderText="修改">
<ItemTemplate>
<FONT face="宋体">
<asp:LinkButton id=LinkButton1 onclick=LinkButton1_Click runat="server" CausesValidation="False" CommandName='<%#DataBinder.Eval(Container.DataItem, "id")%>'>[修改]</asp:LinkButton></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="删除">
<ItemTemplate>
<FONT face="宋体">
<asp:LinkButton id="LinkButton2" runat="server" CausesValidation="False">[删除]</asp:LinkButton></FONT>
</ItemTemplate>
</asp:TemplateColumn>
我想要在点击LinkButton的时候, 发生一个事件相应, 能够处理LinkButton所在那一行的数据
请问应该怎样实现呢? 比如说要得到 那一行 其他列的值 
谢谢.....

解决方案 »

  1.   

    void LinkButton1_Click(object sender, EventArgs e)
    {
      LinkButton lb = (LinkButton)sender;
      DataGridItem dgi = (DataGridItem)lb.Parent.Parent;
      TextBox tb = (TextBox)dgi.FindControl("YOurTextBoxID");
      //....
    }
      

  2.   

    我在DataGrid里面没有设置 TextBox 那一列
    按照 楼上的方法好像没有什么结果 
    其他的代码 如下 
    <asp:TemplateColumn HeaderText="帐号ID">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userId" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "id") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="帐号标题">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userName" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "name") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="帐号描述">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userDesc" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "description") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>我的事件响应的 代码是 
    public void LinkButton1_Click(object sender, System.EventArgs e)
    {
    Panel1.Visible = true;
    LinkButton lb = (LinkButton)sender;
    DataGridItem dgi = (DataGridItem)lb.Parent.Parent;
    string s = ((Label)dgi.FindControl("userName")).Text;
    Response.Write("<script language='javascript'>alert('" + s + "')</script>");

    }结果alert没有结果  
    这个怎么解释呢?
    是不是还要编辑EditItem 
    谢谢 ..........
      

  3.   

    你再试试:
    public void LinkButton1_Click(object sender, System.EventArgs e)
    {
    Panel1.Visible = true;
    LinkButton lb = (LinkButton)sender;
    DataGridItem dgi = (DataGridItem)lb.Parent.Parent;
                         Label lb= (Label)dgi.FindControl("userName");//改这里。和下面
            string s = lb.Text;
    Response.Write("<script language='javascript'>alert('" + s + "')</script>");
    }
      

  4.   

    100MB asp和 asp.net空间 50/1年
    我看到了一个网站 100MB asp和 asp.net空间 现在促销,
    同学们可以做一个简单的个人网站用来找工作 ,
     支持 asp.net 一年才50元!不要错过哦!!!
    速度非常快,一般公司企业 足够用了!
    http://www.hi876.com 
    希望能对大家有帮助
      

  5.   

    CommandName='<%#DataBinder.Eval(Container.DataItem, "id")%>'
    ----
    你这里面是什么?
    你想要这个按钮响应事件,你必须设定它的COMMANDNAME的值,然后在DATAGRID中的ITEMCOMMAND事件里面,进行判断,如下:
    if(e.CommandName = "你设定的值")
    {
    //执行操作,当前行就是e.Item.ItemIndex;
    }
      

  6.   

    名字显示么?试一下<asp:Label id="userName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' />
      

  7.   

    to "hchxxzx(NET?摸到一点门槛) "
    那个没有什么用 
    当时想的时 用commnadName 是不是能够传递值 
    后来放弃了 
    没有去掉  to xzq686(瞬) 
    俺试一试, 谢谢
      

  8.   

    to xzq686(瞬)  和 saucer(思归)
    结果还是一样的 
    没有结果 
    郁闷中...........谢谢 楼下的
      

  9.   

    <form runat="server">
    <asp:DataGrid id="DataGrid1" runat="server">
    <Columns>
    <asp:TemplateColumn>
      <ItemTemplate>
    <asp:LinkButton id=LinkButton1 onclick=LinkButton1_Click runat="server" CausesValidation="False">[修改]</asp:LinkButton>

    <asp:Label id="userName" runat="server" Text='<%#Container.DataItem%>'></asp:Label></ItemTemplate>
    </asp:TemplateColumn></Columns>
    </asp:DataGrid>
    </form><script language="C#" runat="server">
    public void LinkButton1_Click(object sender, System.EventArgs e)
    {
    LinkButton lb = (LinkButton)sender;
    DataGridItem dgi = (DataGridItem)lb.Parent.Parent;
    string s = ((Label)dgi.FindControl("userName")).Text;
    Response.Write("<script language='javascript'>alert('" + s + "')</" + "script>");

    }public void Page_Load(object sender, System.EventArgs e)
    {
      if (!IsPostBack)
      {
    DataGrid1.DataSource = new string[] {"a","b","c"};
    DataGrid1.DataBind();
      }
    }
    </script>
      

  10.   

    谢谢  saucer(思归) 了 
    我再看看去 
    有问题再向您请教 ,,,,,,
      

  11.   

    前台的代码
    <%@ Register TagPrefix="uc1" TagName="top" Src="../top.ascx" %>
    <%@ Page language="c#" Codebehind="setadmin.aspx.cs" AutoEventWireup="false" Inherits="new_one.admin.setadmin" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>addphoto</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    <LINK href="../css/css.css" type="text/css" rel="stylesheet">
    <script language="JavaScript">
    <!--
    function displayMenu(id)
    {
    if(id.style.display=="none")
    {
    id.style.display="";
    }
    else
    {
    id.style.display="none";
    }
    }
    //-->
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 184px; POSITION: static; TOP: 160px" cellSpacing="0"
    cellPadding="0" width="780" border="0">
    <TR>
    <TD colSpan="3"><uc1:top id="Top1" runat="server"></uc1:top></TD>
    </TR>
    <TR>
    <TD vAlign="top" width="18%"><asp:label id="menu" runat="server">menu</asp:label></TD>
    <TD vAlign="top" colSpan="2">
    <table cellSpacing="0" cellPadding="5" width="90%" align="center" border="0">
    <tr>
    <th scope="row">
    <table borderColor="#dddddd" cellSpacing="0" cellPadding="3" width="100%" border="1">
    <tr>
    <td>管理帐号</td>
    </tr>
    </table>
    </th>
    </tr>
    <tr>
    <td>
    <table borderColor="#dddddd" cellSpacing="0" cellPadding="3" width="100%" border="1">
    <tr>
    <td>提示: 对帐号进行更改和删除</td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td vAlign="top">
    <table style="TABLE-LAYOUT: fixed" borderColor="#cccccc" cellSpacing="0" cellPadding="3"
    width="100%" border="1">
    </table>
    <asp:datagrid id="DG1" runat="server" Width="100%" PageSize="5" AllowPaging="True" AutoGenerateColumns="False">
    <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
    <HeaderStyle BackColor="#DDDDDD"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="帐号ID">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userId" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "id") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="帐号标题">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userName" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "name") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="帐号描述">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Label id="userDesc" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "description") %>
    </asp:Label></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="修改">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:LinkButton id=LinkButton1 onclick=LinkButton1_Click runat="server" CausesValidation="False" CommandName='<%#DataBinder.Eval(Container.DataItem, "id")%>'>[修改]</asp:LinkButton></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="删除">
    <ItemTemplate>
    <FONT face="宋体">
    <asp:LinkButton id="LinkButton2" runat="server" CausesValidation="False">[删除]</asp:LinkButton></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    <PagerStyle NextPageText="下一页" PrevPageText="上一页"></PagerStyle>
    </asp:datagrid></td>
    </tr>
    <tr>
    <td align="center"><asp:panel id="Panel1" runat="server" Visible="False">
    <TABLE id="Table2" style="WIDTH: 566px; HEIGHT: 168px" borderColor="#dddddd" cellSpacing="0"
    cellPadding="3" width="566" border="1">
    <TR>
    <TD>帐号</TD>
    <TD>&nbsp;
    <asp:TextBox id="name" runat="server" Width="144px" CssClass="box_12"></asp:TextBox></TD>
    </TR>
    <TR>
    <TD>密码</TD>
    <TD>&nbsp;
    <asp:TextBox id="passwd1" runat="server" Width="144px" CssClass="box_12"></asp:TextBox></TD>
    </TR>
    <TR>
    <TD>确认密码</TD>
    <TD>&nbsp;
    <asp:TextBox id="passwd2" runat="server" Width="144px" CssClass="box_12"></asp:TextBox></TD>
    </TR>
    <TR>
    <TD width="20%">描述(可选)</TD>
    <TD>&nbsp;
    <asp:TextBox id="description" runat="server" Width="432px" CssClass="box_12" TextMode="MultiLine"
    Height="72px"></asp:TextBox></TD>
    </TR>
    <TR align="center">
    <TD colSpan="2">
    <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="帐号" ControlToValidate="name"
    EnableViewState="False"></asp:RequiredFieldValidator>&nbsp;&nbsp;
    <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="密码" ControlToValidate="passwd1"
    EnableViewState="False"></asp:RequiredFieldValidator>
    <asp:CompareValidator id="CompareValidator1" runat="server" ErrorMessage="密码不一致" ControlToValidate="passwd2"
    ControlToCompare="passwd1"></asp:CompareValidator></TD>
    </TR>
    </TABLE>
    <asp:Button id="Button1" runat="server" CssClass="btn_gray" Text="保存设置"></asp:Button>
    </asp:panel></td>
    </tr>
    </table>
    </TD>
    </TR>
    </TABLE>
    </form>
    </body>
    </HTML>
      

  12.   

    后台的代码
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace new_one.admin
    {
    /// <summary>
    /// setadmin 的摘要说明。
    /// </summary>
    public class setadmin : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Panel Panel1;
    protected System.Web.UI.WebControls.TextBox name;
    protected System.Web.UI.WebControls.TextBox passwd1;
    protected System.Web.UI.WebControls.TextBox passwd2;
    protected System.Web.UI.WebControls.TextBox description;
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
    protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2;
    protected System.Web.UI.WebControls.CompareValidator CompareValidator1;
    protected System.Web.UI.WebControls.DataGrid DG1;
    protected System.Web.UI.WebControls.Label menu;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    menu.Text = Session["menu"].ToString();
    Bind();
    }

    } private void Bind()
    {
    new_one.class_one.admin Admin = new new_one.class_one.admin();
    DataSet ds = Admin.getAdmin();//返回一个DataSet
    DG1.DataSource = ds;
    DG1.DataKeyField = "id";
    DG1.DataBind();
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DG1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DG1_PageIndexChanged);
    this.DG1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DG1_EditCommand_1);
    this.DG1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DG1_DeleteCommand);
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void DG1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    DG1.CurrentPageIndex = e.NewPageIndex;
    Bind();
    } private void DG1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    Panel1.Visible = true;
    name.Text = ((Label)e.Item.FindControl("userName")).Text;
    description.Text = ((Label)e.Item.FindControl("userDesc")).Text;
    Button1.CommandArgument = DG1.DataKeys[e.Item.ItemIndex].ToString();
    } private void Button1_Click(object sender, System.EventArgs e)
    {

    } public void LinkButton1_Click(object sender, System.EventArgs e)
    {
    Panel1.Visible = true;
    LinkButton lb = (LinkButton)sender;
    DataGridItem dgi = (DataGridItem)lb.Parent.Parent;
    string s1 = ((Label)dgi.FindControl("userId")).Text;
    string s2 = ((Label)dgi.FindControl("userDesc")).Text;
    string s3 = ((Label)dgi.FindControl("userName")).Text;
    string s = s1 + s2 + s3;
    Response.Write("<script language='javascript'>alert('" + s.Length + "')</script>");

    } public void LinkButton2_Click(object sender, System.EventArgs e)
    {

    } private void DG1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {

    } private void DG1_EditCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {

    }

    }
    }
    alert的结果总是显示s的长度为0
    这是为什么呢>
    谢谢楼下的..............