ここに私のグリッドビューがあります:
<asp:GridView ID="gvconsumer" runat="server" AutoGenerateColumns="False" Width="50%" >
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="lblid" runat="server" Text='<%# Bind("id") %>' Visible="false" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Consumer">
<ItemTemplate>
<asp:Label ID="lblconsumer" runat="server" Text='<%# Bind("FirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblname" runat="server" Text='<%# Bind("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblstatus" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DateCreated">
<ItemTemplate>
<asp:Label ID="lbldatecreaterd" runat="server" Text='<%# Bind("DateCreated") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnApprove" runat="server" Text="Approve" OnClick="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnReject" runat="server" Text="Reject" OnClick="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
これが私のコードビハインドです:(AcceptButton)
if (btnApprove_Click)
GridViewRow row = ((Button)sender).Parent.Parent as GridViewRow;
string id = ((Label)row.FindControl("lblid")).Text;
Response.Write(row.RowIndex);
string ApprovedStatus = "Approved";
string status = ClassBiller.ConsumerStatus(int.Parse(id), ApprovedStatus, DateTime.Now);
これは ConsumerStatus() の私のデータレイヤーです:
string retUpdateStatus = "";
string consumerStatus = "UPDATE MerchantConsumer SET Status = @Status, DateAccepted = @DateAccepted WHERE ConsumerID = @Consumerid";
string[] param = { "@Consumerid", "@Status", "@DateAccepted" };
object[] paramVal = { ConsumerID, Status, DateAccepted };
try
{
ClassDBQuery.ExecNonQuery(consumerStatus, param, paramVal);
}
catch (Exception ex)
{
throw ex;
}
return retUpdateStatus;
これは、GridView をバインドする方法です。
DataTable gridViewConsumer = new DataTable();
gridViewConsumer = ClassConsumer.GetRows();
gvconsumer.DataSource = gridViewConsumer;
gvconsumer.DataBind();
私の問題は、ボタンをダブルクリックしてgridViewのステータスフィールドを更新する必要があることです..しかし、データベースをチェックすると(最初のクリックで)、ステータスフィールドはすでに更新されています..助けてください....