2014-03-05 4 views
0

So.ASP.NET GridView의 사용자 정의 ITemplate

public class LabelTemplate : ITemplate 
{ 

    string __field; 

    public LabelTemplate(string _field) 
    { 
     __field = _field; 
    } 

    private void Combo_DataBinding(Object sender, EventArgs e) 
    { 
     Label l = (Label)sender; 
     GridViewRow row = (GridViewRow)l.NamingContainer; 
     l.Text = DataBinder.Eval(row.DataItem, __field).ToString(); 
    } 

    public void InstantiateIn(Control container) 
    { 
     Label _l = new Label(); 
     _l.DataBinding += new EventHandler(this.Combo_DataBinding); 
     container.Controls.Add(_l); 
    } 

} 


public class ListTemplate : ITemplate 
{ 
    public ListTemplate(string _field, string _query, WebLogic _transport) 
    { 
     _vfield = _field; 
     _vquery = _query; 
     _vtransport=_transport; 
    } 


    protected WebLogic _vtransport; 
    protected string _vfield; 
    protected string _vquery; 
    protected DataRow _vrow; 

    private void Combo_DataBinding(Object sender, EventArgs e) 
    { 
     DropDownList l = (DropDownList)sender; 
     GridViewRow row = (GridViewRow)l.NamingContainer; 
     l.SelectedValue = DataBinder.Eval(row.DataItem, "SowingID").ToString(); 
    } 



    public void InstantiateIn(Control container) 
    { 

     DropDownList _l = new DropDownList(); 
     try 
     { 
      DataTable _z = _vtransport.GetList(_vquery); 
      foreach (DataRow _r in _z.Rows) 
      { 
       ListItem _ll = new ListItem(_r[1].ToString(), _r[0].ToString()); 
       _l.Items.Add(_ll); 
      } 
     } 
     catch { 
      _l.Items.Add(new ListItem("Error", Guid.NewGuid().ToString())); 
     } 
     _l.DataBinding += new EventHandler(this.Combo_DataBinding); 


     container.Controls.Add(_l); 
    } 
} 



public partial class edtRegistry : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      TemplateField _fld = new TemplateField(); 
      //Label 
      LabelTemplate _lab = new LabelTemplate("SowingID"); 
      // DropDownList 
      ListTemplate _lal = new ListTemplate(_cc.ColumnName, _reg._vrfqueries [_reg._valuefields.IndexOf(_cc.ColumnName)], Transport); 

      _fld.HeaderText = _cc.ColumnName; 
      _fld.ItemTemplate = _lab; 
      _fld.EditItemTemplate = _lal; 

      GridView1.Columns.Add(_fld); 
     } 
    } 
} 

등등 :

나는 사용자 지정 드롭 다운리스트가 있습니다. GridView1은 "편집"버튼을 자동 생성 했으므로이를 클릭하면 "GridView 'GridView1'처리되지 않은 RowEditing 이벤트가 발생했습니다. '라는 오류가 발생합니다.

이 오류를 방지하고 데이터를 편집하려면 어떻게해야합니까?

감사합니다.

+0

당신은 그리드에 AutoGenerateEditButton이 = "True"로 사용하고 있습니까? –

+0

그렇다면 AutoGenerateEditButton = "false"처럼 거짓으로 만듭니다. –

+0

예, "True"입니다.하지만 ... 내 편집 된 편집 단추를 사용해야합니까? 나는 자동 편집 버튼을 좋아한다. –

답변

0

해결 방법 1 :

확인 AutoGenerateEditButton = false

해결 방법 2 :

당신이 다음 AutoEdit 버튼을 사용하여 같은 이벤트를 처리하는 경우에, aspx 페이지에

을 귀하의 표 :

뒤에 코드에서 3,516,:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    //Your code here 
} 

protected void GridView1_RowUpdating(object sender, GridViewEditEventArgs e) 
{ 
    // Write here code for edit Rows 
} 
+0

실례 합니다만, RowEditing 코드에서 정확히 무엇을 배치해야합니까? –

+0

레코드를 편집하는 코드입니다. 아무 것도없는 경우 비워 두십시오. –