向datagrid中添加了一列按钮列(编辑.更新和取消),但是我用下面的方法,为什么要双击两次编辑按钮才能使该行变为可编辑的??
Private Sub Page_Load        
 If Not IsPostBack Then
   Dim source As String
   source = "data ......;"
   Dim objConn As New SqlClient.SqlConnection(source)
   Dim strSel As String = "select * from Cigarettes"
   objConn.Open()
   Dim objDataSet As New DataSet
   Dim adaPater As New SqlClient.SqlDataAdapter(strSel, objConn)
   adaPater.Fill(objDataSet, "Sales")
   dgdCigarette.DataSource = objDataSet
   dgdCigarette.DataBind()
   objConn.Close()
 End If
End SubPrivate Sub dgdCigarette_EditCommand
        dgdCigarette.EditItemIndex = e.Item.ItemIndex
        dgdCigarette.DataBind()
End Sub
请大家指教!!!
还有如何自己定义datagrid中各列的宽度???

解决方案 »

  1.   

    <asp:datagrid id="dgdAccount" Width="600px" runat="server" Font-Size="Smaller" AllowPaging="True"
    AutoGenerateColumns="False">
    <HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="#ADC3FF"></HeaderStyle>
    <Columns>
    <asp:BoundColumn DataField="AcctNo" ReadOnly="True" HeaderText="Account #">
    <ItemStyle Width="100px"></ItemStyle>
    </asp:BoundColumn>
    <asp:TemplateColumn HeaderText="Account Name">
    <ItemStyle Width="150px"></ItemStyle>
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AcctName") %>' ID="lblName"/>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox runat="server" id="edit_Name" MaxLength="50" Width="145px" Text='<%# DataBinder.Eval(Container.DataItem, "AcctName") %>'/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Account Address">
    <ItemStyle Width="250px"></ItemStyle>
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AcctAddress") %>' ID="lblAddress"/>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox runat="server" id="edit_Address" Width="245px" Text='<%# DataBinder.Eval(Container.DataItem, "AcctAddress") %>'/>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit">
    <ItemStyle Width="50px"></ItemStyle>
    </asp:EditCommandColumn>
    <asp:TemplateColumn>
    <ItemStyle Width="50px"></ItemStyle>
    <ItemTemplate>
    <asp:LinkButton id="lbtnDelete" CommandName="Delete" runat="server">Delete</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
        Private Sub dgdAccount_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgdAccount.EditCommand
            Me.dgdAccount.EditItemIndex = e.Item.ItemIndex
            BindGrid()
        End Sub
      

  2.   

    再edit 事件中,需要重新连一次数据库,所以dgdCigarette.DataBind()是不行的
    把你再pageload中的联结和绑定,写在一个sub中,如BindGrid() 
    然后datagrid的事件都可以到用这个函数了列的宽度可以在ItemStyle中设置
      

  3.   

    To:Megres(北斗家族) 
    datagrid中的行数是由数据库中的记录数决定的,请问我能不能向datagrid中添加新的行啊???请指教!!!!