2017-11-19 15 views
0

「追加」ボタンを追加した後、グリッドビューに「追加」ボタンを追加しました。 'ボタンは、グリッドビューとデータベースに追加されたレコードの表示と完全に正常に動作しますが、編集ボタンはもう機能していないようです。ここにボタン用のスクリプトがあります。グリッドビューのフッターに「追加」ボタンを追加した後に、編集ボタンが正しく機能しない

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="6" OnRowCancelingEdit="GridView1_RowCancelingEdit" 

    OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" Height="226px" Width="1172px" ShowFooter="True" HorizontalAlign="Center"> 

       <Columns> 
       <asp:TemplateField> 
       <ItemTemplate> 
        <asp:Button ID="btn_Edit" runat="server" Text="Edit" CommandName="Edit" Font-Size="Medium" Height="32px" Width="68px" />   
        </ItemTemplate> 
       <EditItemTemplate> 
        <asp:Button ID="btn_Update" runat="server" Text="Update" CommandName="Update"/> 
        <asp:Button ID="btn_Cancel" runat="server" Text="Cancel" CommandName="Cancel"/> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:Button ID="newAddBtn" runat="server" 
    OnClick="NewAddBtn_Click" Text="Add" CommandName="Insert" Font-Size="Medium" Height="32px" Width="64px"/> 
         </FooterTemplate> 
       </asp:TemplateField> 


      <asp:TemplateField HeaderText="Class ID"> 
       <ItemTemplate> 
        <asp:Label ID="lbl_CID" runat="server" 
    Text='<%#Eval("CID") %>'></asp:Label> 

       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Class Name"> 
       <FooterTemplate> 
        <asp:DropDownList ID="newName" runat="server"> 
         <asp:ListItem>Select</asp:ListItem> 
         <asp:ListItem>Power Yoga</asp:ListItem> 
         <asp:ListItem>Pilates</asp:ListItem> 
         <asp:ListItem>Cardio Peak</asp:ListItem> 
         <asp:ListItem>Body Attack</asp:ListItem> 
         <asp:ListItem>Corb</asp:ListItem> 
         <asp:ListItem>Boxing</asp:ListItem> 
         <asp:ListItem>Zumba</asp:ListItem> 
         <asp:ListItem>Weights</asp:ListItem> 
        </asp:DropDownList> 
        <asp:RequiredFieldValidator ID="NameErr" runat="server" 
    ControlToValidate="newName" ErrorMessage="*" ForeColor="Red"> 
     </asp:RequiredFieldValidator> 
       </FooterTemplate> 
       <ItemTemplate> 
        <asp:Label ID="lbl_cName" runat="server" Text='<%#Eval("CName") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="cname_txt" runat="server" Text='<%#Eval("CName") %>'></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Class Start Time"> 
       <FooterTemplate> 
        <asp:TextBox ID="newStart" runat="server"></asp:TextBox> 
        <asp:RequiredFieldValidator ID="startErr" runat="server" ControlToValidate="newStart" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator> 
       </FooterTemplate> 
       <ItemTemplate> 
        <asp:Label ID="lbl_cstart" runat="server" Text='<%#Eval("CStart") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="cstart_txt" runat="server" Text='<%#Eval("cStart") %>'></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 

        <asp:TemplateField HeaderText="Class Finish Time"> 
         <FooterTemplate> 
          <asp:TextBox ID="newEnd" runat="server"></asp:TextBox> 
          <asp:RequiredFieldValidator ID="endErr" runat="server" ControlToValidate="newEnd" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator> 
         </FooterTemplate> 
       <ItemTemplate> 
        <asp:Label ID="lbl_cend" runat="server" Text='<%#Eval("cend") %>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="cend_txt" runat="server" Text='<%#Eval("cend") %>'></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField>    
     </Columns> 
       <FooterStyle BackColor="#663300" /> 
     <HeaderStyle BackColor="#663300" ForeColor="#ffffff"/> 
     <RowStyle BackColor="#e7ceb6"/> 
    </asp:GridView> 

ここでは、データベースへの接続を開いた後の[追加]ボタンの背後にあるコードを示します。

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ShowData(); 
     } 
    } 
    //ShowData method for Displaying Data in Gridview 
    protected void ShowData() 
    { 
     dt = new DataTable(); 
     con = new SqlConnection(cs); 
     con.Open(); 

     // adapt = new SqlDataAdapter("Select * from customers", con); 

     adapt = new SqlDataAdapter("Select * from classes", con); 

     adapt.Fill(dt); 
     if (dt.Rows.Count > 0) 
     { 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
     con.Close(); 
    } 

     Control control = null; 
     if (GridView1.FooterRow != null) 
     { 
      control = GridView1.FooterRow; 
     } 
     else 
     { 
      control = GridView1.Controls[0].Controls[0]; 
     } 

     string className = ((DropDownList)GridView1.FooterRow.FindControl("newName")).SelectedItem.Text; 

     // string className = (GridView1.FooterRow.FindControl("newName") as TextBox).Text; 
     string startTime = (GridView1.FooterRow.FindControl("newStart") as TextBox).Text; 
     string endTime = (GridView1.FooterRow.FindControl("newEnd") as TextBox).Text; 
     // string strConnString = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString; 
     // using (SqlConnection con = new SqlConnection(strConnString)) 


       cmd.Connection = con; 
       cmd.CommandType = CommandType.Text; 
       cmd.CommandText = "INSERT INTO classes VALUES(@cName, @cStart, @cEnd)"; 
       cmd.Parameters.AddWithValue("@cName", className); 
       cmd.Parameters.AddWithValue("@cStart", startTime); 
       cmd.Parameters.AddWithValue("@cEnd", endTime); 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 


    // Response.Redirect(Request.Url.AbsoluteUri); 
    } 

答えて

1

あなたは自分のC#コードのコードのcon.Close();行の後、すなわち、追加操作の終了時に、あなたのGridViewのは、以下のコードスニペットのようにデータバインドされていることを確認する必要があります。

gridviewdataを取得する方法があるとします。

GridView1.DataSource = GetGridData(); 
GridView1.DataBind(); 

また、必ずあなたのフッター内のすべてのバリデータがValidationGroupは=他に「追加」しているあなたは、グリッドの行の[編集]ボタンをクリックしたとき、それはフッターのバリデータによるページのポストバックから防ぐことができますします。また、追加ボタンにもValidationGroup = "Add"を追加します。私はそれをクリックしたときに

<FooterTemplate> 
    <asp:TextBox ID="newEnd" runat="server"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="endErr" runat="server" ValidationGroup="Add" 
     ControlToValidate="newEnd" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator> 
</FooterTemplate> 
+0

編集ボタンがまだ正常に機能しない、それが空 – Scarl

+0

にクリックのようなものだ何の成果は、あなたが私はあなたのコードに言及したコードを追加しましたありませんか? – Sunil

+0

はい、レコードを追加しますが、編集ボタンはまだ動作しません。 – Scarl

関連する問題