だからここで行きます。私は "顧客"レコードの2つのドロップダウンリストを持っています。最初のものは「ストア」と呼ばれます。 2番目は「StoreWarehouse」と呼ばれます。ユーザが「Store」値を選択すると、その選択に基づいて「StoreWarehouse」ドロップダウンリストがフィルタリングされます。 jQueryとAJAXを使ってフィルタリングを行っています。私はListViewを使用しており、これはInsertItemTemplateにあります。DropDownListのSelectedValueは空白です - なぜですか?
は、ここでそのためのコードです:
function StoreWarehouseLoad(store_ddl) {
var store_id = store_ddl.options[store_ddl.selectedIndex].value;
var js = JSON.stringify({ store: store_id });
$.ajax({
url: baseUrl + '/AutoComplete/StoreList.asmx/GetStores',
data: js,
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
var ddl = $("#StoreWarehouse_ddl");
ddl.find('option').remove();
$(data.d).each(function (index) {
ddl.append('<option value="' + this.WarehouseID + '">' + this.WarehouseID + '</option>');
});
switch (culture) {
case "en-CA":
ddl.val(store_id.substring(0, 2) + "I");
break;
case "en-US":
ddl.val('001');
break;
default:
alert("The default warehouse cannot be set because there's something wrong with the current culture...");
break;
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
sendErrorEmail(window.location.href, 'Customers.aspx.StoreWarehouseLoad', XMLHttpRequest);
}
});
}
このJavaScriptは、「ストア」ドロップダウンリストで選択された選択に基づいて「StoreWarehouseは」ドロップダウンリストをロードするWebサービスを呼び出します。これはすごくうまくいっています。
私の問題は、レコードを保存するときです。顧客のために新しいレコードを入力し、すべての値(StoreとStoreWarehouseのドロップダウンリスト)を入力します。私は "保存"をクリックします - それはデータベースにデータを保存するはずです。私の問題は、StoreWarehouseドロップダウンリストのSelectedValueがビジネスレイヤーに届かないことです。私はListViewとe.Valuesの "OnInserting"イベントのe.Valuesを取得しました["DefaultWarehouseId"]はnullです。ここに私のaspxページは2つのドロップダウンリストのためです:あなたが見ることができるように
<div class="labelAndTextboxContainer">
<div class="labelContainer">
<asp:Label CssClass="rightFloat" ID="StoreId_lbl" runat="server" Text="Branch:"></asp:Label><br />
</div>
<div class="textboxContainer">
<asp:DropDownList ID="Store_ddl" runat="server" DataSourceID="StoreDataSource" AppendDataBoundItems="true"
onchange="StoreWarehouseLoad(this);" DataValueField="StoreID" DataTextField="StoreID"
CssClass="leftFloat" Font-Size="Smaller" SelectedValue='<%# Bind("StoreID") %>'>
<asp:ListItem />
</asp:DropDownList>
<asp:RequiredFieldValidator ID="StoreId_ddl_rfv" runat="server" ControlToValidate="Store_ddl"
Text="*" ForeColor="Red" />
</div>
</div>
<br class="clear" />
<div class="labelAndTextboxContainer">
<div class="labelContainer">
<asp:Label CssClass="rightFloat" ID="StoreWarehouse_lbl" runat="server" Text="Def. Store Warehouse:"></asp:Label><br />
</div>
<div class="textboxContainer">
<asp:DropDownList ID="StoreWarehouse_ddl" runat="server" CssClass="leftFloat" Font-Size="Smaller"
OnDataBound="StoreWarehouse_ddl_OnDataBound" onchange="changeWarehouse();" SelectedValue='<%# Bind("DefaultWarehouseId") %>'
ClientIDMode="Static">
</asp:DropDownList>
</div>
</div>
が、私は<%の#バインド(「DefaultwarehouseId」)%>に設定StoreWarehouseドロップダウンリストの「SelectedValueのを」持っています。何らかの理由でDefaultWarehouseIdがStoreWarehouseのドロップダウンリストの値を取得していない。
面白いことに、私は上に示している私はJavaScriptに次のように置くことができるであり、そのドロップダウンリストの選択した値を私に警告:なぜ、サーバー側のコードは、ピッキングされていない
alert("store warehouse selected is " + $("#StoreWarehouse_ddl").val());
この値を上げる?
ありがとうございました!
マイク
ありがとうございました。 – user888636