(Cuộn xuống dưới cùng của bài để tìm giải pháp.)DropdownList.selectedIndex luôn 0 (vâng, tôi có! IsPostBack)
Got một trang asp.net, trong đó có một DataList . Bên trong chuyên mục dữ liệu này, có là mẫu chứa danh sách thả xuống và mỗi lần trình dữ liệu được lấp đầy với một mục, một ItemCreatedCommand được gọi. itemCreatedCommand chịu trách nhiệm lập hóa đơn danh sách thả xuống.
Tôi nghĩ vấn đề nằm ở đây, rằng Tôi đang sử dụng ItemCreatedCommand để cư nó - nhưng những điều kỳ lạ là nếu tôi chọn màu "xanh", trang sẽ AutoPostBack, và tôi sẽ thấy mà thả xuống vẫn còn nằm trên xanh màu, nhưng khi cố gắng sử dụng nó SelectedIndex, tôi luôn nhận được 0 ...
protected void DataListProducts_ItemCreatedCommand(object
source, DataListItemEventArgs e)
var itemId = (String)DataListProducts.DataKeys[e.Item.ItemIndex];
var item = itemBLL.GetFullItem(itemId);
var DropDownListColor = (DropDownList)e.Item.FindControl("DropDownListColor");
//Also tried with :
//if(!isPostBack) {
DropDownListColor.DataSource = item.ColorList;
DropDownList.Color.Databind();
// } End !isPostBack)
Label1.test = DropDownListColor.SelectedIndex.toString();
// <- THIS IS ALWAYS 0! *grr*
tôi đã thu hẹp xuống mã một chút cho xem, nhưng bạn vẫn có thể xem những gì Tôi đang thử ing to do :) Lý do cho lý do tại sao tôi làm điều này và không khai báo nguồn dữ liệu cho các màu trực tiếp i aspx-page, là tôi cần chạy thử nghiệm nếu (showColors), nhưng tôi không muốn để làm lộn xộn trang html với mã mà tôi cảm thấy phải ở trong mã phía sau tệp.
EDIT: Sau khi cố gắng thay đổi SelectedIndexChange - Tôi đang gặp một "logic" sự nhầm lẫn trong đầu tôi bây giờ - làm sao tôi thay đổi các yếu tố bên trong datalist? Vì, theo như tôi biết - Tôi không có cách nào để kiểm tra xem mục nào trong số các mục trong danh sách dữ liệu này danh sách thả xuống cụ thể thuộc về ... Hoặc? Tôi sẽ thử một vài cách và xem những gì tôi kết thúc với;) Nhưng làm xin vui lòng gửi những suy nghĩ của bạn về câu hỏi này :)
SOLUTION:
Hoặc bong bóng các sự kiện để ItemCommand, hoặc xử lý sự kiện này, có người gửi mẹ (mà là một datalistItem và vận dụng các yếu tố trong đó.
protected void DropDownListColor_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownListColor = (DropDownList)sender;
DataListItem dataListItem = (DataListItem)dropDownListColor.Parent;
var item = items[dataListItem.ItemIndex];
var color = item.ItemColor[dropDownListColor.SelectedIndex];
var LabelPrice = (Label)dataListItem.FindControl("LabelPrice");
LabelPrice.Text = color.Price;
}
Bạn có thể làm rõ thêm về lý do không thêm đưa nó vào trang? Tôi không chắc tôi hiểu chính xác. Bạn nói rằng bạn không muốn lộn xộn ASPX/HTML, nhưng tôi thấy không có lý do tại sao ràng buộc DropDown một chút khác nhau sẽ làm như vậy? –
Vâng, thành thật mà nói, tôi nghĩ rằng tôi sẽ từ bỏ các "không lộn xộn html" -file, kể từ khi tôi đã tìm kiếm xung quanh trong nhiều giờ, và nó có vẻ như không có thực hiện dễ dàng những gì tôi cần. Nhưng lý do là để giữ một đoạn mã nghiêm ngặt và thiết kế. (Bây giờ tôi phải thêm một if-check trong aspx) –