我使用属性生成器给datagrid添加了两个select列,也就是说每一条记录有两个select按钮,我想分别写onclick代码,怎么办呢? 我在html中看到这两个select按钮是属于datagrid的ButtonColumn,没有自己的id ,怎么办呢??谢谢各位大哥大姐了,我是新手

解决方案 »

  1.   

    你可以在把其中的一列改名成select2或其他声么都成,在dg_ItemCommand中加入
    switch(e.CommandName)
    {
    case "Select":
    ... case "Select2":
    ...
    }
      

  2.   

    听不是很明白,这个例子是添加一个确定框,点击弹出确定框
    e.Item.Cells[i].Attributes.Add("onclick","javascript: return confirm('');");
    看是不是你说的意思
      

  3.   

    在请教一下ark_matrix(matrix) ,e.CommandName 好像不行啊
      

  4.   

    谢谢 jianli0108(激光) 
    我是在selectedindexchanged里面写的,e 只有empty和gettype两种方法哦    Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged
        End Sub
      

  5.   

    用jianli0108(激光) 
    的方法可以
      

  6.   

    wangrenda(浪人):
      不行啊,e 是哪个地方声明的??
      

  7.   

    你要实现什么功能,为什么不在这个事件里写:dg_ItemCommand
      

  8.   

    你的COMMANDNAME命令可以不同的嘛?
    你查找控件的时候根据它的CELL来查找
    那么,机器就不会出错,而且会找到你希望找到的select列的空间
      

  9.   

    给你一点代码参考,自己可能还要修改一下
    杂databound事件里面写的
    foreach(Control con in e.Item.Cells[6].Controls)
    {
    if(con.ToString()=="System.Web.UI.WebControls.DataGridLinkButton")
    {
    System.Web.UI.WebControls.LinkButton lbtn=(System.Web.UI.WebControls.LinkButton)con;
    lbtn.Attributes.Add("onclick", "return confirm('您确定删除该条记录吗?')");
    }
    }
      

  10.   

    在DataBound中写
    别忘了实例一下哦
      

  11.   

    把它们的CommandName  改一下   就可以了
    然后再DataGrid_OnCommandItem()事件里写代码!!
      

  12.   

    命苦啊~居然看不懂你们在说什么,我用的是VB.net ,我在itemcommand里面写了select case e.commandname ="" 还是没有用
      

  13.   

    打开本地的msdn,自己看
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWebUIWebControlsDataGridClassItemCommandTopic.htm
      

  14.   

    <asp:DataGrid id="DataGrid1" >
    <Columns>
    <asp:ButtonColumn Text="选择" CommandName="Select1"></asp:ButtonColumn>
    <asp:ButtonColumn Text="选择" CommandName="Select2"></asp:ButtonColumn>
    </Columns>
    </asp:DataGrid>
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
        if(e.CommandName=="select1")
        {
          dosomething();
         }
       else if(e.CommandName=="select2")
       {
         dootherthing();
       } 

    }
      

  15.   

    Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
            Select Case e.CommandName
                Case "Select"
                      ...
                Case "Select2"
                      ...
            End Select    End Sub
      

  16.   

    帮我看看阿,为什么不行啊!!
        Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
            If e.CommandName = "select" Then
                label1.text="第一个按钮"
                else
                label1.text="第二个按钮"
            End If    End Sub
      

  17.   

    我把html里面的commandname='select' 改成小写了,还是不行哈!  ark_matrix(matrix) 帮我看看阿
      

  18.   

    如果你装了.net快速入门的话,看看这个,http://localhost/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/ctrlref/webctrl/datagrid/datagrid4.src
    如果没有,下面有源代码<%@ Import Namespace="System.Data" %><html>
    <script language="VB" runat="server">    Dim Cart As DataTable
        Dim CartView As DataView    Function CreateDataSource() As ICollection        Dim dt As DataTable
            Dim dr As DataRow
            Dim i As Integer        'create a DataTable
            dt = New DataTable
            dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))
            dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
            dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
            dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
            dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double)))        'Make some rows and put some sample data in
            For i = 1 To 9
                dr = dt.NewRow()
                dr(0) = i
                dr(1) = "Item " & i.ToString()
                dr(2) = DateTime.Now.ToShortTimeString
                If (i Mod 2 <> 0) Then
                    dr(3) = True
                Else
                    dr(3) = False
                End If
                dr(4) = 1.23 * (i + 1)
                'add the row to the datatable
                dt.Rows.Add(dr)
            Next        'return a DataView to the DataTable
            CreateDataSource = New DataView(dt)    End Function    Sub Page_Load(sender As Object, e As EventArgs)        If Session("DG4VB_ShoppingCart") Is Nothing Then
                Cart = New DataTable()
                Cart.Columns.Add(new DataColumn("Item", GetType(string)))
                Cart.Columns.Add(new DataColumn("Price", GetType(string)))
                Session("DG4VB_ShoppingCart") = Cart
            Else
                Cart = Session("DG4VB_ShoppingCart")
            End If
            CartView = New DataView(Cart)
            ShoppingCart.DataSource = CartView
            ShoppingCart.DataBind        If Not IsPostBack Then
                ' need to load this data only once
                MyDataGrid.DataSource = CreateDataSource()
                MyDataGrid.DataBind
            End If
        End Sub    Sub Grid_CartCommand(sender As Object, e As DataGridCommandEventArgs)        Dim dr As DataRow = Cart.NewRow()        ' e.Item is the row of the table where the command fired
            ' For bound columns the value is stored in the Text property of TableCell
            Dim itemCell As TableCell = e.Item.Cells(2)
            Dim priceCell As TableCell = e.Item.Cells(3)
            Dim item As String = itemCell.Text
            Dim price As String = priceCell.Text        If e.CommandSource.CommandName = "AddToCart" Then
                dr(0) = item
                dr(1) = price
                Cart.Rows.Add(dr)
            Else   'Remove from Cart            CartView.RowFilter = "Item='" & item & "'"
                If CartView.Count > 0 Then
                    CartView.Delete(0)
                End If
                CartView.RowFilter = ""
            End If
            ShoppingCart.DataBind()    End Sub
    </script><body>    <h3><font face="Verdana">Using a ButtonColumn in DataGrid</font></h3>    <form runat=server>    <table cellpadding="5">
        <tr valign="top"><td>    <b>Product List</b>
        <ASP:DataGrid id="MyDataGrid" runat="server"
            BorderColor="black"
            BorderWidth="1"
            GridLines="Both"
            CellPadding="3"
            CellSpacing="0"
            Font-Name="Verdana"
            Font-Size="8pt"
            HeaderStyle-BackColor="#aaaadd"
            AutoGenerateColumns="false"
            OnItemCommand="Grid_CartCommand"
            >
            <Columns>
                <asp:ButtonColumn HeaderText="Add to cart" Text="Add" CommandName="AddToCart" />
                <asp:ButtonColumn HeaderText="Remove from cart" Text="Remove" CommandName="RemoveFromCart" />
                <asp:BoundColumn HeaderText="Item" DataField="StringValue"/>
                <asp:BoundColumn HeaderText="Price" DataField="CurrencyValue" DataFormatString="{0:c}" ItemStyle-HorizontalAlign="right" />
                <asp:BoundColumn HeaderText="Assembly required?" DataField="BoolValue"/>
            </Columns>
        </asp:DataGrid>    </td><td>    <b>Shopping Cart</b>
        <ASP:DataGrid id="ShoppingCart" runat="server"
            BorderColor="black"
            BorderWidth="1"
            CellPadding="3"
            Font-Name="Verdana"
            Font-Size="8pt"
            HeaderStyle-BackColor="#aaaadd"
            />    </td></tr>
        </table>  </form></body>
    </html>