![](/img/trans.png)
[英]How to get converted boolean value to show as selected value in the editable drop down list in asp.net gridview?
[英]I need to get the value of a drop down list in an asp gridview when updating the row
一切都應該工作,但我不明白為什么我不能從DDL中獲得價值。 我知道代碼不太干凈。
protected void gridProduse_RowEditing(object sender, GridViewEditEventArgs e)
{
gridProduse.EditIndex = e.NewEditIndex;
gridProduse.DataBind();
using (var context = new SATContext())
{
var query = from t in context.TipuriProduse
select t.Denumire;
DropDownList list = new DropDownList();
list.DataSource = query.ToList();
list.DataBind();
list.ID = "ddlTipProdus";
list.Height = 27;
DropDownList listMoneda = new DropDownList();
listMoneda.ID = "ddlMoneda";
listMoneda.Items.Add("RON");
listMoneda.Items.Add("EUR");
listMoneda.Items.Add("USD");
listMoneda.Height = 27;
gridProduse.Rows[e.NewEditIndex].Cells[7].Controls.Add(list);
gridProduse.Rows[e.NewEditIndex].Cells[6].Controls.Add(listMoneda);
gridProduse.Rows[e.NewEditIndex].Cells[6].Controls[0].Visible = false;
gridProduse.Rows[e.NewEditIndex].Cells[7].Controls[0].Visible = false;
}
}
protected void gridProduse_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gridProduse.Rows[e.RowIndex];
Produs prod = new Produs();
prod.ProdusId = Convert.ToInt32(((TextBox)(row.Cells[2].Controls[0])).Text);
prod.Denumire = ((TextBox)(row.Cells[3].Controls[0])).Text;
DropDownList ddl = (DropDownList)gridProduse.Rows[e.RowIndex].FindControl("ddlMoneda");
prod.Moneda = ddl.SelectedValue; // this is where i get the error
//prod.Moneda = ((row.FindControl("ddlMoneda") as DropDownList)).SelectedValue;
prod.PretCuTVA = Convert.ToInt32(((TextBox)(row.Cells[5].Controls[0])).Text);
prod.PretFaraTVA = Convert.ToInt32 (((TextBox)(row.Cells[4].Controls[0])).Text);
lit1.Text = prod.ProdusId.ToString();
using (var context = new SATContext())
{
IRepository<Produs> ProdusRepository = new ProdusRepository();
ProdusRepository.Update(prod);
}
gridProduse.EditIndex = -1;
gridProduse.DataBind();
Response.Redirect("Produse.aspx");
}
這是錯誤:
Licenta.dll中發生類型'System.NullReferenceException'的異常,但未在用戶代碼中處理
附加信息:對象引用未設置為對象的實例。
我很確定您需要先選擇一個單元格,然后才能可靠地調用“ FindControl”
(DropDownList)gridProduse.Rows[e.RowIndex].Cells[SomeCell].FindControl("ddlMoneda");
由於您的listMoneda控件是在Page_Init
事件后動態創建的,因此它沒有在ViewState中注冊,因此無法在PostBack上找到。 閱讀此說明以獲取解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.