可以绑定数据到linkbutton 的CommandArgument属性中,然后在itemcommand中获得CommandArgument:
<asp:linkbutton id="lbn_1" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"用户ID") %>></asp:linkbutton>在itemcommand事件中:
string str=e.CommandArgument.tostring();

解决方案 »

  1.   

    谢谢楼上的阿,可是我在linkbutton中只想显示“编辑”什么的
      

  2.   

    <asp:linkbutton id="lbn_1" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"用户ID") %> Text="编辑"></asp:linkbutton>
      

  3.   

    恩,我在linkbutton中添加了href="javascript:show();__postback(linkbutton1,'')"
    <script>
    function show(){
        var mmm
       mmm= window.showmodaldialog("b.aspx?...")
    }
    </script>如何传递呢,,?我就不知道,是现执行href 还是,还是itemcommand,因为我还想b页面确定回送到主页面,就需要使用一个隐藏的linkbutton1 是记录刷新
      

  4.   

    还有就是,我在linkbutton中,onclick事件好像不起作用
      

  5.   

    隐藏的也不一定是linkbutton,主页面上的一个button也行,就是不知道如何取得所选的ID,还要把它传递给b.aspx,
      

  6.   

    在datagrid里面的linkbutton不会触发onclik事件,只会触发itemcomand事件.linkbutton也没有href属性.
      

  7.   

    好啊,,谢谢 chyich() 了
      

  8.   

    linkbutton是没有href属性,不过,写上去可以用的,我试过的,,
      

  9.   

    给你一个例子:<asp:TemplateColumn HeaderText="软件名">
    <HeaderStyle Width="396px"></HeaderStyle>
    <ItemTemplate>
    <asp:HyperLink id=HyperLink1 NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "链接") %>' Width="394" Height="14px" BackColor="White" runat="server"   tooltip='<%# DataBinder.Eval(Container.DataItem, "说明") %>'>
    <%# DataBinder.Eval(Container.DataItem, "软件名") %>
    </asp:HyperLink>
    </ItemTemplate>
    </asp:TemplateColumn>相应的代码:
     Private Sub DataListSecIndex_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles DataListSecIndex.ItemCommand
            If e.CommandName = "ShowDataBase" Then
                Dim linkbuttemp As LinkButton
                linkbuttemp = DataListSecIndex.Items(e.Item.ItemIndex()).FindControl("LinkButton1") '取得linkbutton的属性
                DataGrid1.DataSource = BindSoftWare(linkbuttemp.CommandArgument)  '进行相应的处理,取得相应的软件            DataGrid1.CurrentPageIndex = 0            '还原由于翻页引起的CurrentPageIndex的改变
                DataGrid1.DataBind()
            End If
        End Sub
    还有,
     你的想法不对,事实上,事件的产生是使用事件冒泡机制.最后由datagrid来处理的.
      

  10.   

    因为我还想b页面确定回送到主页面,就需要使用一个隐藏的linkbutton1 是记录刷新?实现了吗?
      

  11.   

    现在有个问题就是好象showmodaldialog只能传递一个参数,而我需要传递多个,所以我考虑用个数组来实现,
      

  12.   

    mint(mint) --你说的 是对的,我刚才看了帮助,发现是不是可以通过重写 OnBubbleEvent,并从 OnBubbleEvent 调用 RaiseBubbleEvent,,看了不是太懂~~~~
      

  13.   

    可以在客户端用javascript来判断那些linkButton的Id是有一定的规律的。我这样用过,不算复杂。
      

  14.   

    因为我想用showmodaldialog,这样的话就需要点击linkbutton时触发这个事件,但是传递参数的时候又需要使用itemcommand,,,哪位大虾帮忙撒
      

  15.   

    TonyDaiShui(拖泥带水)  不能通过ID来判断吧,你能具体一点吗
      

  16.   

    现在的想法就是先通过itemcommand取得所选记录的一个字段,然后通过linkbutton的一个onclik or href 来showmodaldialog一个窗口,修改这条记录后回送,如herf="javascript:show();__doPostBack('button1','')",其中button1是主页面上的一个隐藏按钮,通过它可以刷新主页面。。现在就不知道这种思路对不对~~~~~~~~如果不能实现只能不用showmodaldialog,直接跳到下个页面算了,而且我想这样参数传递也简单,,,,
    大家发表一下意见
      

  17.   

    我在做项目的时候也有过这种想法,简单的说就发一条信息给客户端,等客户确认,程序此时停止运行,等客户发回信息后,程序根据回发的信息,确定是否执行下面的操作。这种想法是好的。但在web中好像不能实现。因为客户端与服务器的交互都是一次往返,而且服务器端并不保存原有页面的状态,所以我感觉是不能实现的。
      

  18.   

    其实,如果只是页面一个简单的控件什么的(不知道这样说对不对)比如一个button什么的,用我那种方法是可以实现的,不过现在是datagrid中的一个按钮,问题也就是楼上的一位说的事件冒泡(具体,我也不是很清楚),这样在参数传递的时候就不知道该如何实现(也就是不知道所选记录的ID)
      

  19.   

    因为点击以后,好象只有itemcommand 响应,而设置href以后,itemcommand就不执行。能不能把 showmodaldialog 放在 itemcommand中来实现呢?
      

  20.   

    要获得单击按扭所在行记录的id是可以实现的,你可以把数据库的主键列名赋值给datagrid的datakeyfield属性:
    <asp:datagrid id="dg_menu" runat="server" DataKeyField="int_id" ShowFooter="True" CellSpacing="0" CellPadding="2" BorderWidth="1" BorderColor="#6699cc" BorderStyle="solid" BackColor="white" AutoGenerateColumns="False">在itemcommand事件里这样获得:
    string str_menu_id=dg_menu.DataKeys[e.Item.ItemIndex].ToString();你试试!
      

  21.   

    chyich() 谢谢了,不过我的意思是,可不可以先 在itemcommand事件中获得记录的ID,然后在showmodaldialog中传递这个值到b页面,
     也就是能不能在itemcommans事件中调用客户端函数show(show函数中调用showmodaldialog)
    ~~~~
      

  22.   

    原来你没有实现,上面没看明白你的意思。我试过了,如果想在itemcommand事件里面弹出确认框,等客户确认,程序此时停止运行,等客户发回信息后,程序根据回发的信息,确定是否执行下面的操作。不能实现,不过你可以亲手试试,可以这样弹出对话框:
    在itemcommand事件里这样获得:
    string str_menu_id=dg_menu.DataKeys[e.Item.ItemIndex].ToString();
    Page.RegisterStartupScript("is_true","<script>window.showModalDialog()</script>");
    ………
    //其它的语句我也这样写过,但并不是像我们想象的那样运行,它是把上面的所有的语句都执行完了以后,才弹出对话框。
    你试试吧!