2013-08-26 58 views
0

我正在创建一个动态的网格视图,并且有一部分为编辑创建了新的事件处理程序。我还创建了一个用于进行实际编辑的新方法,但我需要将它作为参数之一传递给一个数据表名称,以便我可以重新绑定它。我想不出哪里添加参数:将参数添加到新的事件处理程序

 GridView gridData = new GridView(); 
     gridData.ID = "test"; 
     gridData.AutoGenerateEditButton = true; 
     gridData.RowEditing += new GridViewEditEventHandler(grid_RowEditing); 
     gridData.DataSource = tbl; 
     gridData.DataBind(); 


protected void grid_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     ((GridView)sender).EditIndex = e.NewEditIndex; 

     // I don't know how to pass the datasource name to this method, or if its even possible, because i won't ever know the actual gridview name because its dynamically created 
     //((GridView)sender).DataSource = ; 
     ((GridView)sender).DataBind(); 

回答

0

如果您不需要解开事件处理要做到这一点最简单的方法是用一个lambda表达式

string dataSourceName = ...; 
gridData.RowEditing += (sender, e) => grid_RowEditing(gridData, dataSourceName, e); 
     gridData.DataSource = tbl; 
     gridData.DataBind(); 


void grid_RowEditing(GridView gridData, string dataSourceName, GridViewEventArgs e) { 
    ... 
} 
+0

真棒,我刚刚尝试过,但现在在grid_RowEditing的方法下,这部分((GridView)sender).EditIndex = e.NewEditIndex;说“e”不在当前背景 –

+0

@BradHazelnut中,你可以使用相同的技术来传递'e'。我会更新我的回答 – JaredPar

+0

真棒,这是完美的,非常感谢,现在虽然,当我点击编辑按钮它只是做回发,我需要手动把代码放在那里显示文本中的所有字段框?我认为AutoGenerateEditButton = true;照顾那 –

相关问题