안에 ItemsType, ItemList, UnitPrice, Quantity 및 Total 인 5 개의 열이 포함 된 계단식 dropdownlist
이 있습니다. 첫 번째 dropdownlist
에서 ItemsType을 선택하면 데이터베이스에 바인딩 된 두 번째 dropdownlist
즉 ItemList에 항목이 채워집니다. 편집 button
을 클릭하면 selectedValue
을 할당했지만 두 번째 dropdownlist
항목 유형의 항목이 선택되지 않습니다. 디버깅 모드에서 webform을 실행할 때 값이 올바르게 dropdownlist.selectedvalue
에 할당되었지만 값을 전혀 받아들이지 못하는 것을 보았습니다. 이상한 점은 첫 번째 디버그 후 두 번째로 button
편집을 클릭하면 드롭 다운 목록의 항목이 올바르게 선택된다는 것입니다.DropdownList SelectedValue 속성이 편집 작업 중에 값을 허용하지 않습니다.
내가 사용한 다음
ddlCarriedItems.SelectedValue = s 값;
SValue에는 itemlist의 값이 있지만 SelectedValue는 none을 표시합니다.
다음은 코드입니다.
protected void btnEdit_Click(object sender, EventArgs e)
{
try
{
Button btn = (Button)sender;
GridViewRow gv = (GridViewRow)btn.NamingContainer;
string VRM_id = gv.Cells[0].Text;
dc.Company_code = Convert.ToInt32(Session["company_code"].ToString());
dc.Vrm_id = Convert.ToInt32(VRM_id);
DataTable dtVRM_CP = vrmbll.edit_VRM_carried_products(dc);
int rowIndex = 0;
if (dtVRM_CP.Rows.Count > 0)
{
for (int i = 0; i < dtVRM_CP.Rows.Count; i++)
{
DropDownList ddlItemsType = (DropDownList)gvCarriedItems.Rows[rowIndex].Cells[1].FindControl("ddlItemsType");
DropDownList ddlCarriedItems = (DropDownList)gvCarriedItems.Rows[rowIndex].Cells[2].FindControl("ddlCarriedItems");
TextBox txtItemPrice = (TextBox)gvCarriedItems.Rows[rowIndex].Cells[3].FindControl("txtItemPrice");
TextBox txtItemQty = (TextBox)gvCarriedItems.Rows[rowIndex].Cells[4].FindControl("txtItemQty");
TextBox txtItemTotal = (TextBox)gvCarriedItems.Rows[rowIndex].Cells[5].FindControl("txtItemTotal");
ddlItemsType.SelectedIndex = Convert.ToInt32((dtVRM_CP.Rows[i]["items_type"]).ToString());
int itemstype = ddlItemsType.SelectedIndex;
string SValue = dtVRM_CP.Rows[i]["items"].ToString();
if (itemstype == 1)
{
ddlCarriedItems.SelectedValue =SValue;
}
else if (itemstype == 2)
{
ddlCarriedItems.SelectedValue = SValue;
}
else if (itemstype == 3)
{
ddlCarriedItems.SelectedValue = SValue;
}
else
{ }
txtItemPrice.Text = dtVRM_CP.Rows[i]["items_price"].ToString();
txtItemQty.Text = dtVRM_CP.Rows[i]["items_qty"].ToString();
txtItemTotal.Text = dtVRM_CP.Rows[i]["items_total"].ToString();
if (i != (dtVRM_CP.Rows.Count) - 1 && gvCarriedItems.Rows.Count != (dtVRM_CP.Rows.Count))
{
AddNewRow();
}
rowIndex++;
}
}
}
catch
{ }
}
AjaxControlToolkit의 CascadingDropDown을 사용하고 있습니까? – dario
아니요, AjaxControlToolkit을 사용하지 않습니다. 두 번째 드롭 다운 목록에 항목을 채우려면 ddlItemsType_SelectedIndexChanged 메서드를 사용하고 있습니다. – TFrost
그런 다음 DropDownList를 다시 바인드해야합니다. – dario