0
好吧我有一些我正在構建的網站的代碼。我有一個數據綁定到SqlDataSource的列表框。選中時,它應該生成一個SQL查詢,用於更新\篩選頁面中其他列表框的其他列表框。我試過只是爲了讓它改變一個標籤的文本,甚至沒有工作。下面是我的一些代碼:雖然autopostback爲真,但Asp.net OnSelectedIndexChanged事件不能觸發
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<%--register triggers for Partial postback --%>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="showbutton" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="viewapps" EventName="Click" />
</Triggers>
<ContentTemplate>
<%--- the controls in their rows and columns --%>
<%--column 1 --%>
<asp:Label runat="server" ID="TESTER">Text</asp:Label>
<asp:Panel runat="server" CssClass="column1">
<asp:Panel ID="Panel1" runat="server" CssClass="row1">
<%-- Make Panel --%>
<span style="padding:8px; position:relative;">
<asp:Label ID="label1" runat="server" Text="Make" Font-Size="Large" ></asp:Label>
<asp:Listbox ID="MakeList" runat="server" Width="166px" SelectionMode ="Multiple" DataSourceID="MakeSource" DataTextField="MakeName" AutoPostBack="true" DataValueField="MakeID" OnSelectedIndexChanged="UpdateModels">
</asp:Listbox>
</span>
<asp:SqlDataSource ID="MakeSource" runat="server" ConnectionString="<%$ ConnectionStrings:VCDBConnectionString %>" ></asp:SqlDataSource>
</asp:Panel>
現在在我的C#代碼隱藏我有這樣的:
public void UpdateModels(object sender, EventArgs e)
{
//build a string for a SQL query for the Models
string newQuery = "SELECT M.[ModelID], M.[ModelName] FROM Model M INNER JOIN BaseVehicle BV ON BV.ModelID = M.ModelID Where BV.MakeID= '";
string test = "";
foreach (ListItem li in MakeList.Items)
{
//add each piece of the selected text to the string
if (li.Selected)
{
test += li.Value;
test += "' AND BV.MakeID= '";
}
int cleanup = test.LastIndexOf("' AND BV.MakeID= '");
test.Remove(cleanup-19,cleanup);
//ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", "alert('" + test + "');", true);
TESTER.Text = test;
}
但還是測試儀沒有被更新。即使AutoPostBack = true,即使整個事情被包裝在更新面板中。 =(我需要一些幫助搞清楚這一個。 我也希望任何其他建議。 我將很高興爲您提供可能需要的任何額外的信息,只是讓我知道了意見。