如何将textbox.text分配给选定的下拉列表值?

时间:2013-02-16 20:07:10

标签: asp.net vb.net

我有一个用户选择产品的页面。我希望然后使用选定的ddl值填充文本框值,以允许它们在必要时更新值。我的ddl正在填充正确。

当我调试它时,文本框uxProductFamilyUpvalue似乎被分配了ddlProductFamilies.SelectedValue,但当我返回页面时,文本框为空。

有什么想法吗? TY

Imports ThomasOE.Globals
Imports ThomasOE.Utilities
Imports ThomasOE.Product
Imports System.Data
Imports System.Web.UI.WebControls

Public Class frmProducts
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load                
        If Not IsPostBack Then
            FillProductTypesDropdown()
            DisplayLoginDetails(Master, Session.Item(SSNLOGINNAME), Session.Item(SSNCURRENTDATETIME))
        End If

    End Sub

    Private Sub FillProductTypesDropdown()
        Dim objProduct As New Product

        Try

            objProduct.FillProductTypeDS()

            ddlProductTypes.Items.Clear()
            ddlProductTypes.Items.Add(String.Empty)

            For i As Integer = 0 To objProduct.ProductTypeDS.Tables(0).Rows.Count - 1
                ddlProductTypes.Items.Add(objProduct.ProductTypeDS.Tables(0).Rows(i).Item("product_type"))
            Next

            objProduct = Nothing

        Catch ex As Exception

        End Try

    End Sub

    Private Sub FillProductFamiliesDropdown()

        Dim objProduct As New Product

        Try

            objProduct.FillProductFamilyDS(ddlProductTypes.Text)

            ddlProductFamilies.Items.Clear()
            ddlProductFamilies.Items.Add(String.Empty)

            For i As Integer = 0 To objProduct.ProductFamilyDS.Tables(0).Rows.Count - 1
                ddlProductFamilies.Items.Add(objProduct.ProductFamilyDS.Tables(0).Rows(i).Item("product_family"))               
            Next

            objProduct = Nothing

        Catch ex As Exception

        End Try


    End Sub

    Protected Sub ddlProductTypes_SelectedIndexChanged1(sender As Object, e As EventArgs) Handles ddlProductTypes.SelectedIndexChanged
        FillProductFamiliesDropdown()

    End Sub

    Private Sub UpdateProductPage()        
        uxProductTypeUp.Text = ddlProductTypes.SelectedValue
        uxProductFamilyUp.Text = ddlProductFamilies.SelectedItem.Text

    End Sub

    Protected Sub ddlProductFamilies_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProductFamilies.SelectedIndexChanged
        'UpdateProductPage()            
        uxProductFamilyUp.Text = ddlProductFamilies.SelectedItem.Text

    End Sub
End Class

2 个答案:

答案 0 :(得分:0)

问题是由于您已经加载了该页面。 在更改DDL中的值的方法中,您可以使用jQuery调用AJAX。

在网站主标题中包含jQuery

<script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>

在您的DDL页面上添加类似

的内容
    //DropDownList1 on change AJAX
    $("#<%=DropdownList1.ClientID %>").change(function () {
        GetData();
    });

   function GetData() {
        $.ajax({
            type: "POST",
            //here you have to call vb.net function
            url: "Default.aspx/GetDataVB",
            data: '{ddl_val: "' + $("#<%=DropDownList1.ClientID%>")[0].value + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: GetData_OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
    });
    }
    function GetData_OnSuccess(response) {
        $("#<%=TextBox1.ClientID%>").html(response.d);
    }

进入vb代码

 <System.Web.Services.WebMethod()> _
 Public Shared Function GetDataVB(ByVal ddl_val As String) As String

     return ddl_val

 end function

答案 1 :(得分:0)

您可以将OnItemSelected事件附加到下拉列表,并在后面的代码中的事件定义中设置TextBox的文本