DataGrid中有个模板按钮“新增"和两个模板列。(缴费日期和缴费金额)。当我点新增时应出现两个文本框。这时"新增"按钮变成了."提交"和"取消"两个按钮.
请问怎样写代码.
        能不能给个例子呀.

解决方案 »

  1.   

    <asp:EditCommandColumn ButtonType="PushButton" UpdateText="提交" CancelText="取消" EditText="新增">
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:EditCommandColumn>
    参考
    http://dotnet.aspx.cc/ShowDetail.aspx?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4
      

  2.   

    用编辑列
    <asp:EditCommandColumn HeaderText="修改" EditText="修改" CancelText="取消" UpdateText="更新" HeaderStyle-HorizontalAlign=Center ItemStyle-HorizontalAlign=Center ItemStyle-Wrap=False></asp:EditCommandColumn>后台分别处理三个按钮的事件
      

  3.   

    后台
    public void DG1_Edit(Object sender, DataGridCommandEventArgs e)
    {
    DG1.EditItemIndex = (int)e.Item.ItemIndex;
    BindGrid();
    }
    public void DG1_Cancle(object sender, DataGridCommandEventArgs e)
    {
    DG1.EditItemIndex = -1;
    BindGrid();
    }
    public void DG1_Update(object sender, DataGridCommandEventArgs e)
    {
        //写提交后的处理
    }
      

  4.   

    以下程序可以快速添加數據入數據庫中:
    <%@ Page Language="vb" Debug="true" ValidateRequest="false"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <html>
    <script language="VB" runat="server">
        Dim strConn as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".\\kk.mdb") + ";"
        Dim myConnection as New OleDbConnection (strConn)    Sub Page_Load(Src As Object, E As EventArgs)
            If Not (IsPostBack)
                BindGrid()
            End If
        End Sub    Sub BindGrid()
            Dim DS As DataSet
            Dim MyCommand As OleDbDataAdapter
            MyCommand = new OleDbDataAdapter("SELECT TOP 5 * FROM [board] ORDER BY boardid DESC", MyConnection)
            DS = new DataSet()
            MyCommand.Fill(DS, "table1")
            MyDataGrid.DataSource=DS.Tables("table1").DefaultView
            MyDataGrid.DataBind()
        End Sub
     
        Public Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
        MyDataGrid.ShowFooter = True
            MyDataGrid.EditItemIndex = -1
            BindGrid()      
        End Sub    Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
        MyDataGrid.ShowFooter = False
            MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
            BindGrid()
        End Sub    Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
               Dim ID As String = CType(e.Item.FindControl("lblID"), Label).Text
               Dim BoardType As String = CType(e.Item.FindControl("txtBoardType"), TextBox).Text
               Dim ReadMe As String = CType(e.Item.FindControl("txtReadMe"), TextBox).Text
               Response.write (ID & "<BR>" & BoardType & "<BR>" & ReadMe)
               UpdateRecord(id,boardtype,readme)   'Call Sub
       MyDataGrid.ShowFooter = True
       MyDataGrid.EditItemIndex = -1
               BindGrid()
        End Sub    Public Sub MyDataGrid_Delete(sender As Object, e As DataGridCommandEventArgs)
            dim i as String = CType(e.Item.FindControl("lblID"), Label).Text  
    Response.write (i)
            DeleteRecord(i)  'Call Sub
            MyDataGrid.EditItemIndex = -1
            BindGrid()      
        End SubSub doInsert(sender As Object, e As DataGridCommandEventArgs)
        If e.CommandName = "Insert" Then
               Dim addBoardType As String = CType(e.Item.FindControl("add_BoardType"), TextBox).Text
           Dim addReadMe As String = CType(e.Item.FindControl("add_ReadMe"), TextBox).Text
       '----------------------------
       dim lblCheckBoardType as Label
       lblCheckBoardType = CType(e.Item.FindControl("CheckBoardType"),Label)
       dim lblCheckReadMe as Label
       lblCheckReadMe = CType(e.Item.FindControl("CheckReadMe"),Label) if  addBoardType = "" and addReadMe = "" then
            lblCheckBoardType.Visible = "true"
            lblCheckReadMe.Visible = "true"
    else
               if addBoardType <> "" then
      if addReadMe <> "" then
         Response.write (addBoardType & "<BR>" &addReadMe)
                     AddRecord(addBoardType,addReadMe)  'Call Sub
                 BindGrid() 
                  else 
             lblCheckReadMe.Visible = "true"
                  end if
                else
          lblCheckBoardType.Visible = "true"
        end if
         end if
         End If
    End Sub    Sub AddRecord(newBoardType,newReadMe)
            Dim MyCommandAdd As OleDbCommand
            Dim InsertCmd As String = "INSERT INTO board (boardtype,readme) values (@boardtype,@readme)"
            MyCommandAdd = New OleDbCommand(InsertCmd, myConnection)
            MyCommandAdd.parameters.add("@boardtype",Format(newBoardType))
            MyCommandAdd.parameters.add("@readme",Format(newReadMe))
            MyCommandAdd.Connection.Open()
            MyCommandAdd.ExecuteNonQuery()
            MyCommandAdd.Connection.Close()
        End Sub    Sub DeleteRecord(DelRecord)
            Dim MyCommandDel As OleDbCommand
            Dim InsertCmd As String = "DELETE FROM board WHERE boardid = @Id"
            MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
            MyCommandDel.parameters.add("@id",DelRecord)
            MyCommandDel.Connection.Open()
            MyCommandDel.ExecuteNonQuery()
            MyCommandDel.Connection.Close()
        End Sub    Sub UpdateRecord(newID,newBoardType,newReadMe)
            Dim MyCommandDel As OleDbCommand
            Dim InsertCmd As String = "UPDATE  board SET boardtype=@boardtye,readme=@readme WHERE boardid =" & newID
            MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
            MyCommandDel.parameters.add("@boardtype",Format(newBoardType))
        MyCommandDel.parameters.add("@readme",Format(NewReadme))
            MyCommandDel.Connection.Open()
            MyCommandDel.ExecuteNonQuery()
            MyCommandDel.Connection.Close()
        End Sub Function UFormat(formatdata)
        formatdata=replace(formatdata,"&amp;","&")
              'formatdata=replace(formatdata,"''","'")  
            formatdata=replace(formatdata,"&lt;","<")
            formatdata=replace(formatdata,"&gt;",">")
            formatdata=replace(formatdata,"&lt;","chr(60)")
            formatdata=replace(formatdata,"&gt;","chr(37)")
            formatdata=replace(formatdata,"&quot;","""")
              'formatdata=replace(formatdata,";;",";")    
            formatdata=replace(formatdata,"<br>" & chr(13)+chr(10),chr(13))
            Uformat=replace(formatdata,"&nbsp;",chr(32))
        End Function
    </script>
      

  5.   

    <body style="font: 10pt arial">
    <form runat="server" ID="editDataGrid">
    <ASP:DataGrid id="MyDataGrid" runat="server"
          Width="200"
          BackColor="#ffffff"
          BorderColor="black"
          CellPadding=3
          CellSpacing="0"
          HeaderStyle-BackColor=#ff0000
          HeaderStyle-Font-Name="arial"
          HeaderStyle-Font-Bold=True 
          HeaderStyle-Font-Size="11"
          HeaderStyle-ForeColor=#ffffff
          AlternatingItemStyle-BackColor=#ffffcc
          ItemStyle-Font-Name="arial"
          ItemStyle-Font-Size="10"
          OnCancelCommand="MyDataGrid_Cancel" 
          OnUpdateCommand="MyDataGrid_Update" 
          OnDeleteCommand="MyDataGrid_Delete"
          OnEditCommand="MyDataGrid_Edit"    
          AutoGenerateColumns="false"
      ShowFooter="True"
      OnItemCommand="doInsert">
           <Columns>
            <asp:TemplateColumn HeaderText="BoardID" ItemStyle-Width="30px">
               <ItemTemplate>
                      <asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardid") %>' />
                </ItemTemplate>  
                </asp:TemplateColumn>            <asp:TemplateColumn HeaderText="BoardType">
              <FooterTemplate>
                           <asp:TextBox ID="add_BoardType" Columns="20" Runat="Server" TextMode="MultiLine" Rows="3"/>
       <asp:Label ID="CheckBoardType"  Runat="Server" Text="Enter Something" Font-Name="arial" Font-Size="12" ForeColor="#CC0000" Visible="false"/>
                      </FooterTemplate>                  
      <ItemTemplate>
                           <asp:Label ID="lblBoardType" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardtype") %>' />
                      </ItemTemplate>
      <EditItemTemplate>
                         <asp:TextBox runat="server" id="txtBoardType" Text='<%# Uformat(DataBinder.Eval(Container.DataItem, "boardtype")) %>' TextMode="MultiLine" Rows="3"/>
                         <asp:RequiredFieldValidator id="reqval_BoardType" Text="Can't Null" ControlToValidate="txtBoardType" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
      </EditItemTemplate>
    </asp:TemplateColumn>            <asp:TemplateColumn HeaderText="ReadMe">
              <FooterTemplate>
                           <asp:TextBox ID="add_ReadMe" Columns="20" Runat="Server" TextMode="MultiLine" Rows="3"/>
       <asp:Label ID="CheckReadMe"  Runat="Server" Text="Enter Something" Font-Name="arial" Font-Size="12" ForeColor="#CC0000" Visible="false"/>
                      </FooterTemplate>                  
      <ItemTemplate>
                           <asp:Label ID="lblReadMe" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReadMe") %>' />
                      </ItemTemplate>
      <EditItemTemplate>
                         <asp:TextBox runat="server" id="txtReadMe" Text='<%# UFormat(DataBinder.Eval(Container.DataItem, "ReadMe")) %>' TextMode="MultiLine" Rows="3"/>
                         <asp:RequiredFieldValidator id="reqval_ReadMe" Text="Can't Null" ControlToValidate="txtReadMe" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
      </EditItemTemplate>
     </asp:TemplateColumn>        <asp:EditCommandColumn
            ButtonType="PushButton" UpdateText="Update" CancelText="Cancel"
            EditText="Edit" HeaderText="Edit">
            </asp:EditCommandColumn> <asp:TemplateColumn HeaderText="Delete">
                 <ItemTemplate>
                    <asp:Button CommandName="Delete" Text="Delete" ID="btnDel" Runat="server" />
                 </ItemTemplate>
     <FooterTemplate>
                     <asp:Button CommandName="Insert" Text="Add" ID="btnAdd" Runat="server"/>
                 </FooterTemplate>
            </asp:TemplateColumn>
            </Columns>
    </ASP:DataGrid>
    </form>
    </body>
    </html>
      

  6.   

    更新、取消两个按钮默认触发DataGrid控件的UpdateCommand和CancelCommand事件
    例如
    编辑事件
    public void DataGrid1_EditItemCommand(Object sender, DataGridCommandEventArgs e)
    {
    DG1.EditItemIndex = (int)e.Item.ItemIndex;
    BindGrid();
    }
    取消事件
    public void DataGrid_CancleCommand(object sender, DataGridCommandEventArgs e)
    {
    DG1.EditItemIndex = -1;
    BindGrid();
    }
    更新事件
    public void DG1_UpdateCommand(object sender, DataGridCommandEventArgs e)
    {
        //写提交后的处理
    }
      

  7.   

    你们都理解错版主的意思了吧。请参考:
    http://aspnet.4guysfromrolla.com/articles/021203-1.aspx
      

  8.   

    //增加 角色信息表明细信息
    ds.Tables[0].AcceptChanges(); //为列表追加一新行
    DataRow row= ds.Tables[0].NewRow() ;
    row["fld_roleid"] = "";
    row["fld_rolename"] = "";
    row["fld_description"] = "";

    ds.Tables[0].Rows.Add(row);