Hi 各位前輩好
我在datasource Insert資料道資料庫後,Postback更新DropdownList資料的時候遇到了無法更新的問題,煩請各位高手指導
首先,我在aspx定義了一個DataSource與一個DropDownList
<asp:DropDownList ID="dlLot" runat="server" AutoPostBack="True"></asp:DropDownList>
<asp:SqlDataSource ID="dsLot" runat="server"
ConnectionString="<%$ ConnectionStrings:MY_SYS %>"
SelectCommand=
"SELECT distinct Lot
FROM DEFINITION
where 1=1 "
InsertCommand="INSERT INTO DEFINITION (Lot) VALUES (@Lot) "
OnInserted="dsLot_Inserted" >
</asp:SqlDataSource>
在DataSource我定義了一個dsLot_Inserted function , 資料庫正確Insert資料後也的確有進入這個函式
且程式也正確執行無任何錯誤
protected void dsLot_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
dlLot.DataValueField = "Lot";
dlLot.DataTextField = "Lot";
dlLot.DataSource = dsLot;
dlLot.DataBind();
}
但DropDownList上的資料並沒有更新,但我在資料庫看資料在執行dlLot.DataSource = dsLot; 前就已經成功新增了
感覺有點像是POSTBACK執行元件更新之後才來執行dsLot_Inserted
我試著新增了一個 button和一個click事件做了一樣的事情, 執行完dsLot_Inserted去按一下 ,
DropDownList dlLot就更新資料了....請教各位前輩要如何解決這個問題
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
protected void Button1_Click(object sender, EventArgs e)
{
dlLot.DataValueField = "Lot";
dlLot.DataTextField = "Lot";
dlLot.DataSource = dsLot;
dlLot.DataBind();
}
把dlLot.DataBind();寫在pageload,每次觸發事件就會bind一次
protected void Page_Load(object sender, EventArgs e)
{
DropDownListBind();
}
/////////////////////////////////////////
private void DropDownListBind()
{
dlLot.DataValueField = "Lot";
dlLot.DataTextField = "Lot";
dlLot.DataSource = dsLot;
dlLot.DataBind();
}