技巧随记:DataGrid事件的整合
相信大家都在网站后台管理页面使用DataGrid来进行数据的编辑操作,比如对数据进行删除,编辑,更新,点击等,是不是要点击几次生成相关事件函数?比如,生成:
这样是不是很麻烦哪,那好直接使用:
你可以看出那个更简单,更直接?
当然下面的几个函数是不能够使用ItemCommand函数的,你看出来什么原因了吗?参数不一样哪。
这些东西不能算是技巧,滥竽充数而已 :)))
private void rssDataGrid_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
}
private void rssDataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataRow dr = dt.Tables[ 0] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ];
dr.Delete();
BindTheGrid();
}
private void rssDataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
rssDataGrid.EditItemIndex = e.Item.ItemIndex;
BindTheGrid();
}
private void rssDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 )][ "dname" ]
= ( ( TextBox )( e.Item.Cells[ 1 ].Controls [ 0 ] ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "durl" ]
= ( ( TextBox )( e.Item.FindControl( "urlTextBox" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "description" ]
= ( ( TextBox )( e.Item.FindControl( "descriptionTxt" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "dclass" ]
= ( ( DropDownList )e.Item.FindControl( "classDropDownList" ) ).SelectedValue;
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
}
{
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
}
private void rssDataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataRow dr = dt.Tables[ 0] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ];
dr.Delete();
BindTheGrid();
}
private void rssDataGrid_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
rssDataGrid.EditItemIndex = e.Item.ItemIndex;
BindTheGrid();
}
private void rssDataGrid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 )][ "dname" ]
= ( ( TextBox )( e.Item.Cells[ 1 ].Controls [ 0 ] ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "durl" ]
= ( ( TextBox )( e.Item.FindControl( "urlTextBox" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "description" ]
= ( ( TextBox )( e.Item.FindControl( "descriptionTxt" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "dclass" ]
= ( ( DropDownList )e.Item.FindControl( "classDropDownList" ) ).SelectedValue;
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
}
这样是不是很麻烦哪,那好直接使用:
private void rssDataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch( e.CommandName )
{
case "Edit":
rssDataGrid.EditItemIndex = e.Item.ItemIndex;
BindTheGrid();
break;
case "Update":
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 )][ "dname" ]
= ( ( TextBox )( e.Item.Cells[ 1 ].Controls [ 0 ] ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "durl" ]
= ( ( TextBox )( e.Item.FindControl( "urlTextBox" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "description" ]
= ( ( TextBox )( e.Item.FindControl( "descriptionTxt" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "dclass" ]
= ( ( DropDownList )e.Item.FindControl( "classDropDownList" ) ).SelectedValue;
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
break;
case "Cancel":
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
break;
case "Delete":
DataRow dr = dt.Tables[ 0] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ];
dr.Delete();
BindTheGrid();
break;
}
}
{
switch( e.CommandName )
{
case "Edit":
rssDataGrid.EditItemIndex = e.Item.ItemIndex;
BindTheGrid();
break;
case "Update":
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 )][ "dname" ]
= ( ( TextBox )( e.Item.Cells[ 1 ].Controls [ 0 ] ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "durl" ]
= ( ( TextBox )( e.Item.FindControl( "urlTextBox" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "description" ]
= ( ( TextBox )( e.Item.FindControl( "descriptionTxt" ) ) ).Text;
dt.Tables[ 0 ] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ][ "dclass" ]
= ( ( DropDownList )e.Item.FindControl( "classDropDownList" ) ).SelectedValue;
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
break;
case "Cancel":
rssDataGrid.EditItemIndex = -1;
BindTheGrid();
break;
case "Delete":
DataRow dr = dt.Tables[ 0] .Rows[ e.Item.ItemIndex + rssDataGrid.PageSize * ( rssDataGrid.PageCount - 1 ) ];
dr.Delete();
BindTheGrid();
break;
}
}
你可以看出那个更简单,更直接?
当然下面的几个函数是不能够使用ItemCommand函数的,你看出来什么原因了吗?参数不一样哪。
private void rssDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
dt.Tables[ 0 ].DefaultView.Sort = e.SortExpression;
BindTheGrid();
}
private void rssDataGrid_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void rssDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
rssDataGrid.CurrentPageIndex = e.NewPageIndex;
BindTheGrid();
}
{
dt.Tables[ 0 ].DefaultView.Sort = e.SortExpression;
BindTheGrid();
}
private void rssDataGrid_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void rssDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
rssDataGrid.CurrentPageIndex = e.NewPageIndex;
BindTheGrid();
}
这些东西不能算是技巧,滥竽充数而已 :)))