2012-10-27 3 views
0

아래의 3 가지 컨트롤의 값에 따라 데이터로 채워지는 드롭 다운 목록이 있습니다. 하단의 드롭 다운리스트가 비어 만 다른 컨트롤 중 하나에 의해 트리거 다시 게시 후 데이터로 채워DropDownList 내용이 업데이트되지 않습니다.

1) 초기 페이지로드 :

내가 가진 2 문제가 있습니다. 초기 페이지로드에 올바른 데이터가 채워지는 간단한 방법이 있습니까?

2) 코드 숨김에서 UpdatePanel.Update()을 제거하면 다른 컨트롤 중 하나에 의해 트리거 된 포스트 백이있을 때마다 하단 드롭 다운 목록의 데이터가 업데이트되지 않습니다. 이 상황에서 드롭 다운 목록의 데이터가 UpdatePanel.Update()을 필요로하지 않고 자동으로 업데이트되지 않습니까?

나는 누군가가 내가 여기에서 무엇을 얻고 있는지 이해할만큼 충분히 명확하다고 설명하기를 바랍니다.

<asp:SqlDataSource ID="srcTheatreList" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" SelectCommand="SELECT theatreID, name FROM Theatre"></asp:SqlDataSource> 
<asp:SqlDataSource ID="srcMovieList" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" SelectCommand="SELECT movieID, title FROM Movie"></asp:SqlDataSource> 
<asp:SqlDataSource ID="srcSessionTimes" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" 
    SelectCommand="SELECT s.time FROM Session s INNER JOIN Movie m ON (s.movieID = m.movieID) INNER JOIN Theatre t ON (s.theatreID = t.theatreID) WHERE [email protected] AND [email protected] AND [email protected]"> 
    <SelectParameters> 
     <asp:ControlParameter Name="theatreID" ControlID="ddlTheatreList" PropertyName="SelectedValue" /> 
     <asp:ControlParameter Name="movieID" ControlID="ddlMovieList" PropertyName="SelectedValue" /> 
     <asp:ControlParameter Name="date" ControlID="txtDate" PropertyName="Text" DefaultValue="23/09/2012" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

<asp:UpdatePanel ID="UpdatePanel" runat="server"> 
<ContentTemplate> 
    <table> 
    <tr><td>Select theatre:</td><td><asp:DropDownList ID="ddlTheatreList" runat="server" DataSourceID="srcTheatreList" DataTextField="name" DataValueField="theatreID" AutoPostBack="True"></asp:DropDownList></td></tr> 
    <tr><td>Select movie:</td><td><asp:DropDownList ID="ddlMovieList" runat="server" DataSourceID="srcMovieList" DataTextField="title" DataValueField="movieID" AutoPostBack="True"></asp:DropDownList></td></tr> 
    <tr><td>Select date:</td><td><asp:TextBox ID="txtDate" runat="server" AutoPostBack="True" Text="23/09/2012"></asp:TextBox><img id="calendarButton2" src="~/images/calendar.png" alt="" runat="server" /> 
    <asp:CalendarExtender ID="CalendarExtender" runat="server" TargetControlID="txtDate" TodaysDateFormat="d MMMM yyyy" DaysModeTitleFormat="MMMM yyyy"></asp:CalendarExtender></td></tr> 
    <tr><td>Select time:</td><td><asp:DropDownList ID="ddlSessionTimes" runat="server" AutoPostBack="True"></asp:DropDownList></td></tr> 
    </table><br /> 
</ContentTemplate> 
</asp:UpdatePanel> 

Codebehind가 :

Protected Sub UpdateSessionTimes(sender As Object, e As EventArgs) Handles ddlMovieList.SelectedIndexChanged, ddlTheatreList.SelectedIndexChanged, txtDate.TextChanged 
    Dim dv As DataView = srcSessionTimes.Select(DataSourceSelectArguments.Empty) 
    ddlSessionTimes.DataSource = dv 
    ddlSessionTimes.DataTextField = "time" 
    ddlSessionTimes.DataValueField = "time" 
    ddlSessionTimes.DataBind() 
    UpdatePanel.Update() 
End Sub 

답변

0

선택 매개 변수의 SqlDataSource에 액세스 할 방법은 .. 여기 잘못된 샘플 코드는 ..

<asp:SqlDataSource ID="SqlDataSourceGridView" runat="server" 
    ProviderName="System.Data.SqlClient" 
    SelectCommand="SELECT [Name],[Address] FROM [Table_Emp] where Id = @Id" 
    OnSelecting="SqlDataSourceGridView_Selecting"> 

    <SelectParameters> 
     <asp:Parameter Name="Id" Type="Int32" /> 
    </SelectParameters> 

</asp:SqlDataSource> 

3) in Selecting event method put parameter value to the command 

protected void SqlDataSourceGridView_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
{ 
    e.Command.Parameters["@Id"].Value = (int)(Id ?? 0); // nullable ind is not applicable here 
} 

및 문제에 대한 의견을 작성하려면 어떻게해야합니까 :)

관련 문제