2016-01-13 4 views
0

Привет, у меня есть это ниже раскрывающихся списков.DropDownList выбранное значение

<asp:DropDownList ID="dllcust" CssClass="form-control chosen-select" runat="server" AutoPostBack="True" DataSourceID="Sqls_Cust" DataTextField="Cust_Name" DataValueField="Cust_ID" ></asp:DropDownList> 
<asp:SqlDataSource ID="Sqls_Cust" runat="server" ConnectionString="<%$ ConnectionStrings:ConnString %>" SelectCommand="SELECT [Cust_ID], [Cust_Name] FROM [Customer]"></asp:SqlDataSource> 

<asp:DropDownList ID="dllinvoivceid" CssClass="form-control chosen-select" runat="server" DataSourceID="Sqlds_Invoive" DataTextField="InvoiceID" DataValueField="InvoiceID"> 
</asp:DropDownList> 

<asp:SqlDataSource ID="Sqlds_Invoive" runat="server" ConnectionString="<%$ ConnectionStrings:ConnString %>" SelectCommand="SELECT Invoice.InvoiceID FROM Invoice INNER JOIN Customer ON Invoice.Cust_ID = Customer.Cust_ID WHERE (Customer.Cust_ID = @Cust_ID)"> 
<SelectParameters> 
<asp:ControlParameter ControlID="dllcust" Name="Cust_ID" PropertyName="SelectedValue" /> 
</SelectParameters> 
</asp:SqlDataSource> 

Как вы можете видеть из кода dllinvoivceid получить его значения на основе dllcust значения, так что я могу получить счета для выбранного клиента.

Я вид сетки определяется следующим образом:

<asp:GridView ID="gridvoucher" OnRowCommand="gridvoucher_RowCommand" runat="server" AutoGenerateColumns="false" CssClass="table table-bordered text-nowrap"> 
<Columns> 
<asp:TemplateField HeaderText="Edit"> 
<ItemTemplate> 
<asp:LinkButton ID="LinkButton8" runat="server" CausesValidation="False" CommandName="EditVoucher" CssClass="btn btn-primary btn-xs" Text=""><i class="glyphicon glyphicon-pencil"></i></asp:LinkButton> 
</ItemTemplate> 
<ControlStyle CssClass="btn btn-primary" /> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Delete"> 
<ItemTemplate> 
<asp:LinkButton ID="LinkButton9" runat="server" CausesValidation="False" CommandName="DeleteVoucher" CssClass="btn btn-primary btn-xs" OnClientClick="return confirm('Are you sure you want to delete this record ?');" Text="Delete"><i class="glyphicon glyphicon-trash"></i></asp:LinkButton> 
</ItemTemplate> 
<ControlStyle CssClass="btn btn-danger" /> 
</asp:TemplateField> 
<asp:BoundField DataField="Voucher ID" HeaderText="Voucher #" SortExpression="Voucher ID" /> 
<asp:BoundField DataField="Invoice ID" HeaderText="Invoice ID" SortExpression="Invoice ID" /> 
<asp:BoundField DataField="Cust_ID" HeaderText="Cust_ID" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" SortExpression="Cust_ID" /> 
<asp:BoundField DataField="Customer" HeaderText="Customer Name" SortExpression="Customer Name" /> 
</Columns> 
<EmptyDataTemplate> 
&quot;No records found&quot; 
</EmptyDataTemplate> 
</asp:GridView> 

В gridvoucher_RowCommand У меня есть следующий код:

protected void gridvoucher_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 

    string commandName = e.CommandName.ToString().Trim(); 
    GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); 
    string voucherID = row.Cells[2].Text; 
    string custid = row.Cells[4].Text; 
    string invoiceid = row.Cells[3].Text; 
    GridViewRow gvRow = (GridViewRow)((Control)e.CommandSource).NamingContainer; 
    Int32 rowind = gvRow.RowIndex; 
    switch (commandName) 
    { 
     case "EditVoucher": 
      txtvoucherid.Text=voucherID; 
      dllcust.SelectedValue = custid; 
      dllinvoivceid.SelectedValue = invoiceid; 
      MultiView1.ActiveViewIndex = 1; 
      break; 
    } 
} 

Вопрос заключается в выпадающий список с идентификатором dllinvoivceid он не принимает выбранный value from grid-view

Требуется первая запись, полученная от команды выбора от Sqlds_Invoive.

+0

Вместо связывания клиента и счета падения вниз в разметке, сделайте это в коде, используя пример следующим образом: 'ddlCust.DataSource = sqDataSource1; ddlCust.DataBind() '. Кроме того, выполните эту привязку данных с кодовым кодом в событии Page_Load, если Page.IsPostBack == false. НЕ ИСПОЛЬЗУЙТЕ свойство DataSourceID, потому что это является причиной ваших проблем. – Sunil

ответ

1

Удалить DataSourceID свойства из разметки для каждого из двух падений падения, и подписаться на SelectIndexChanged случае dllcust, в котором вы будете связывать данные dllinvoiceid падения вниз. Выпадение dllcust должно быть связано с данными в событии Page_Load. Если вы сделаете это, выбранное значение, установленное в событии RowCommand сетки, будет установлено правильно.

Удалить DataSourceID свойства из разметки для капельного падения

<asp:DropDownList ID="dllcust" CssClass="form-control chosen-select" runat="server" 
    AutoPostBack="True" OnSelectedIndexChanged="dllcust_SelectedIndexChanged" 
    DataTextField="Cust_Name" DataValueField="Cust_ID" ></asp:DropDownList> 
<asp:SqlDataSource ID="Sqls_Cust" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnString %>" SelectCommand="SELECT [Cust_ID], [Cust_Name] FROM [Customer]"></asp:SqlDataSource> 

<asp:DropDownList ID="dllinvoivceid" CssClass="form-control chosen-select" runat="server" 
     DataTextField="InvoiceID" DataValueField="InvoiceID"> 
</asp:DropDownList> 

<asp:SqlDataSource ID="Sqlds_Invoive" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnString %>" 
SelectCommand="SELECT Invoice.InvoiceID FROM Invoice INNER JOIN 
     Customer ON Invoice.Cust_ID = Customer.Cust_ID WHERE (Customer.Cust_ID = @Cust_ID)"> 
<SelectParameters> 
<asp:ControlParameter ControlID="dllcust" Name="Cust_ID" PropertyName="SelectedValue" /> 
</SelectParameters> 
</asp:SqlDataSource> 

данные связывают раскрывающееся меню в коде-за использование DataSource собственности

protected void Page_Load(object sender, EventArgs e) 
    { 
      if(!Page.IsPostBack) 
      { 
       dllcust.DataSource = this.Sqls_Cust; 
       dllcust.Databind(); 
      } 
    } 

    protected void ddlcust_SelectedIndexChanged(object sender, EventArgs e) 
    { 
       dllinvoiceId.DataSource = this.Sqlds_Invoive; 
       dllinvoiceId.Databind(); 
    }