2

ユーザーが製品を選択するページがあります。次に、テキストボックスの値に選択した ddl 値を入力して、必要に応じて値を更新できるようにしたいと考えています。私の ddl は適切に設定されています。

これをデバッグすると、テキスト ボックス uxProductFamilyUpvalue に ddlProductFamilies.SelectedValue が割り当てられているように見えますが、ページに戻ると、テキスト ボックスは null です。

何か案は?タイ

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
4

2 に答える 2

0

イベントをドロップダウンリストに添付しOnItemSelected、TextBox のテキストをコード ビハインドのイベント定義に設定できます。

于 2016-01-13T22:34:43.623 に答える
0

問題は、ページを既に読み込んでいることが原因です。DDL で値を変更するには、jQuery で AJAX 呼び出しを使用できます。

サイト マスター ヘッダーに jQuery を含める

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

DDL がある aspx ページで、次のようなものを追加します。

    //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
于 2015-03-26T12:29:04.943 に答える