2011-08-15 12 views
1

を削除します。GridViewのは、私が削除テンプレートフィールドでGridViewコントロールを持って再結合しない

<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
<ContentTemplate> 
    <asp:GridView ID="gvCurrentDay" CssClass="gridview" OnRowCommand="gvCurrentDay_RowCommand" AutoGenerateColumns="false" runat="server"> 
     <Columns> 
      <asp:BoundField DataField="ClientName" HeaderText="Client" /> 
      <asp:BoundField DataField="ProjectTitle" HeaderText="Project" /> 
      <asp:BoundField DataField="TimeToAdd" HeaderText="Time Allocated" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" /> 
      <asp:TemplateField ItemStyle-HorizontalAlign="Center"> 
       <ItemTemplate> 
        <asp:ImageButton ID="imbDeleteRow" ImageUrl="~/images/icons/DeleteRed.png" CommandArgument='<%# Eval("RecordID") %>' CommandName="Delete" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView>  
</ContentTemplate> 

をコードでは、ボタンが押されたとデータベースエントリがデータベースから削除されたときに実行されますが、

protected void gvCurrentDay_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Delete") 
    { 
     int RecordID = Convert.ToInt32(e.CommandArgument); 

     tdl objTdl = new tdl(); 
     objTdl.DeleteEntryForDay(RecordID); 

     GetItineryForDay(Convert.ToDateTime(txtCalendar.Text)); 

     lblMessages.Text = "Entry removed"; 
    } 
} 

そして、ここではGetItineryForDay手順の最初の部分である:

GridViewのは、削除を制御するコードがあり、ここで、再バインドされていません
protected void GetItineryForDay(DateTime SelectedDate) 
{ 
    gvCurrentDay.DataSource = null; 
    gvCurrentDay.DataBind(); 

    tdl objTdl = new tdl(); 
    DataTable dt = objTdl.GetUsersProjectTimeForDay(SelectedDate, Convert.ToInt32(Request.Cookies["staffid"].Value)); 

    if (dt.Rows.Count > 0) 
    { 
     DataRow row = dt.Rows[0]; 
     int TotalTime2 = Convert.ToInt32(row[7]); 
     string TotalTime = row[7].ToString() + " minutes"; 

     gvCurrentDay.DataSource = dt; 
     gvCurrentDay.DataBind(); 

GridViewが更新されていない理由をコードから確認できますか? GridViewはUpdatePanelの中​​にあります。

+0

あなたは 'dt.Rows.Count'が0より大きい場合にのみ、多分、この場合に返されるので、グリッドが – Chandu

+0

結合されていない行がないdridを結合しているが、あなたが取得しているあなたはよろしいです値をDataTable dtに入力しますか? (つまり、0より大きい数です) – Vinay

+0

はい、サンプルを試した回数に応じて6行あります。 – DarrylGodden

答えて

1

"Delete"をとして使用する代わりに、"ManualDelete"のようなものを使用してください。 "Delete"は、通常、RowDeletingRowDeletedイベントによってトラップされます。

また、「データベースのエントリがデータベースから削除されているため」、リバインドコードをRowDeletedイベントに入れることができます。

protected void gvCurrentDay_RowDeleted(object sender, GridViewDeletedEventArgs e) 
{ 
    GetItineryForDay(Convert.ToDateTime(txtCalendar.Text)); 
    lblMessages.Text = "Entry removed"; 
} 
+1

ありがとうございました。CommandNameが解決するように見えるので、「削除」を変更してください! – DarrylGodden

関連する問題