2016-12-30 4 views
0

行編集モードでグリッドビューを検出したいだけで、この時点でドロップダウンリストをバインドしたいだけです。私は多くの記事を見つけたと私は、このコード行データバインドで編集モードでグリッドビューを検出

私はこのエラーに

データバインディング持たせる:「AllProjects_Resultは」 名「プロジェクト」でプロパティが含まれていませんが。

protected void GVAllProjects_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    DropDownList ddlDistrictName = null; 
    DropDownList ddlPurposeName = null; 
    DropDownList ddlTypes = null; 
    if (e.Row.RowType == DataControlRowType.Footer && e.Row.RowState == DataControlRowState.Edit) 
    { 

     ddlDistrictName = e.Row.FindControl("ddlDistrictName") as DropDownList; 
     ddlPurposeName = e.Row.FindControl("ddlPurposeName") as DropDownList; 
     ddlTypes = e.Row.FindControl("ddlTypes") as DropDownList; 
    } 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 

     ddlDistrictName = e.Row.FindControl("ddlDistrictName") as DropDownList; 
     ddlPurposeName = e.Row.FindControl("ddlPurposeName") as DropDownList; 
     ddlTypes = e.Row.FindControl("ddlTypes") as DropDownList; 
    } 
    if (ddlDistrictName != null) 
    { 
     using (AlamaarRealEstateEntities context = new AlamaarRealEstateEntities()) 
     { 
      ddlDistrictName.DataSource = context.Districts.ToList(); 
      ddlDistrictName.DataTextField = "DistrictName"; 
      ddlDistrictName.DataValueField = "ID"; 
      ddlDistrictName.DataBind(); 

      ddlPurposeName.Items.Insert(0, new ListItem("")); 
      ddlPurposeName.DataSource = context.Purposes.ToList(); 
      ddlPurposeName.DataTextField = "PurposeName"; 
      ddlPurposeName.DataValueField = "ID"; 
      ddlPurposeName.DataBind(); 

      ddlTypes.Items.Insert(0, new ListItem("")); 

      ddlTypes.DataSource = context.Types.ToList(); 
      ddlTypes.DataTextField = "TypeName"; 
      ddlTypes.DataValueField = "ID"; 
      ddlTypes.DataBind(); 

     } 
     if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit) 
     { 

      ddlDistrictName.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "DistrictID")).ToString(); 
      ddlPurposeName.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "PurposeID")).ToString(); 
      ddlTypes.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "TypeID")).ToString(); 
     } 
    } 
} 

ここでこれらの行でエラー:

if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit) 
{ 
     ddlDistrictName.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "DistrictID")).ToString(); 
     ddlPurposeName.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "PurposeID")).ToString(); 
     ddlTypes.SelectedValue = (DataBinder.Eval(e.Row.DataItem, "TypeID")).ToString(); 
} 

答えて

0

RowDataBoundイベントでDataControlRowStateを確認してください。

protected void GVAllProjects_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //check if the edit state > 0 
     if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
     { 
      //do stuff with the row that is being edited 
     } 
    } 
} 
+0

私はこのコードを試しましたが、それでも同じエラーがあります – hashim

+0

あなたが提供したスニペットに問題はありません。 'AllProjects_Result'や' GVAllProjects_RowDataBound'の 'Projects'への参照はありません。この問題は、GridViewの 'EditItemTemplate'にある可能性が高いです。存在しない 'Eval(" Projects ")のようなもの。 – VDWWD

+0

この問題を解決するにはどうすればよいですか? – hashim

関連する問題