我一直在撓我的頭超過兩個小時。我似乎無法弄清楚。ASP.NET C#如果其他被忽略?
基本上我做的是「贏家」出現在狀態下,當我點擊選擇投標人按鈕。問題是,當我選擇底部選擇投標人按鈕,然後激活它上面的按鈕。如果其他決定顯示錯誤消息「無法選擇贏家,錯誤原因:您已經選擇了贏家。」被忽略,並繼續在狀態字段上寫「贏家」。
錯誤消息將顯示,如果我嘗試以其他方式做。選擇第一行中的按鈕將狀態設置爲贏家,然後選擇第二行按鈕會告訴我,我不能選擇贏家,因爲我已經選擇了其他人。
我的C#代碼:
protected void rptrBindBidders_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Winner" && e.CommandArgument.ToString() != "")
{
Int64 onsaleID = Convert.ToInt64(Request.QueryString["saleID"]);
String CS = ConfigurationManager.ConnectionStrings["DatabaseSQLConnectionString1"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
using (SqlCommand cmd1 = new SqlCommand("select * from Bidders where saleID=" + onsaleID + " ", con))
{
SqlDataAdapter sda = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
sda.Fill(dt);
string BidderStatus = dt.Rows[0]["BidderStatus"].ToString().Trim();
if (BidderStatus == "Winner")
{
lblmessage.ForeColor = Color.Red;
lblmessage.Text = "Cannot select winner. Error cause: You have already selected a winner.";
}
else
{
using (SqlCommand cmd = new SqlCommand("update Bidders set [BidderStatus]='Winner' where [bidID]='" + e.CommandArgument.ToString() + "'", con))
{
con.Open();
cmd.ExecuteNonQuery();
lblmessage.ForeColor = Color.Green;
lblmessage.Text = "Success! A bidder has been selected!";
con.Close();
}
}
this.BindBidders();
}
}
}
}
}
我的HTML代碼:
<asp:Repeater ID="rptrBindBidders" onItemCommand="rptrBindBidders_ItemCommand" runat="server">
<HeaderTemplate>
<table class="table">
<thead>
<tr>
<th>Bidders</th>
<th>Date bidded</th>
<th>Price Offer</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("BidderName") %></td>
<td><%#Eval("DateBidded") %></td>
<td>₱<%# Eval("bidPrice") %></td>
<td><%# Eval("BidderStatus") %></td>
<td><asp:Button ID="btnSelectBuyer" runat="server" Text="Select Bidder" CommandName="Winner" CommandArgument='<%#Eval("bidID") %>'/></td>
<!--<asp:HiddenField ID="hfbidID" Value='' runat="server" />-->
<!--<asp:HiddenField ID="hfBidderName" Value='' runat="server" />-->
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
'If'永遠不會被忽略。 'Else'永遠不會被忽略。編譯器總是始終忠實地遵循您給出的指示。放入一個斷點並在調試器中逐步瀏覽代碼,並找出它實際上在做什麼。將鼠標懸停在變量上或使用觀察窗口瞭解它爲什麼執行它。找出BidderStatus是什麼。通過做出假設,你無法瞭解周圍世界的任何事情;你只能通過出去觀察事物來學習。 –
請注意查詢中的SQL注入。 – Alejandro