그래서 여기에 우리가 간다. "고객"레코드에 두 개의 드롭 다운 목록이 있습니다. 첫 번째는 "Store"라고합니다. 두 번째 것은 "StoreWarehouse"라고합니다. 사용자가 "상점"값을 선택하면 해당 값에 따라 "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);
}
});
}
이 자바 스크립트는 "저장"드롭 다운 목록에서 선택한 선택에 따라 "StoreWarehouse는"드롭 다운 목록을로드하는 웹 서비스를 호출합니다. 이것은 모두 훌륭하게 작동합니다.
내 문제는 레코드를 저장할 때입니다. 고객을 위해 새 레코드를 입력하고 모든 값 (Store 및 StoreWarehouse 드롭 다운 목록은 물론)을 입력합니다. "저장"을 클릭합니다 - 그러면 데이터를 데이터베이스에 저장해야합니다. 내 문제는 StoreWarehouse 드롭 다운 목록의 SelectedValue가 비즈니스 계층으로 전달되지 않는다는 것입니다. 나는 심지어 ListView와 e.Values에 대한 "OnInserting"이벤트에 대한 e.Values를 캡처했습니다 [ "DefaultWarehouseId"]는 null입니다. 여기 내 영문 페이지는 두 개의 드롭 다운 목록을 위해 : 당신이 볼 수 있듯이
<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의 드롭 다운 목록에서 값을 선택하지 않습니다.
재미있는 것은 내가 위에 표시된 내 자바 스크립트에 다음을 넣을 수 있습니다이며 그 드롭 다운 목록의 선택된 값의 저를 경고 : 왜 서버 측 코드를 따기되지
alert("store warehouse selected is " + $("#StoreWarehouse_ddl").val());
이 값을 올리시겠습니까?
감사합니다.
마이크
감사합니다. – user888636