StandardView
我有一个 gridview 允许用户根据 a (a basic select * from table
) 和 a CurrentView
( 此查询显示今天所有项目的列表)之间的单选按钮列表值更改 gridview 选择命令,我已经公开声明了这两个字符串之前表单加载。当用户单击编辑时,gridview 会进行回发,将其发送回标准视图。
这是我的数据表:
private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(conn);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
con.Close();
}
这是我的onrowediting
protected void EditItem(object sender, GridViewEditEventArgs e)
{
SqlConnection con = new SqlConnection(conn);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
string EditView = StandardView;
switch (rblChooseEditView.SelectedValue)
{
case "1":
EditView = StandardView;
cmd.CommandText = EditView;
gvMainView.EditIndex = e.NewEditIndex;
BindData();
break;
case "2":
EditView = CurrentView;
cmd.CommandText = EditView;
gvMainView.EditIndex = e.NewEditIndex;
BindData();
break;
}
}
已编辑
我想包括我的表单加载BindData()
和我命名的一个新方法RetainEditSelect()
,以便添加你们给我的建议。我仍然没有任何成功。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
RetainEditSelect();
}
}
private void BindData()
{
//String for Main GridView
string strMainQuery = StandardView;
SqlCommand cmdMain = new SqlCommand(strMainQuery);
switch (rblChooseEditView.SelectedValue)
{
case "1":
strMainQuery = StandardView;
gvMainView.DataSource = GetData(cmdMain);
gvMainView.DataBind();
break;
case "2":
strMainQuery = CurrentView;
gvMainView.DataSource = GetData(cmdMain);
gvMainView.DataBind();
break;
}
}
这是我的新方法
private void RetainEditSelect()
{
using (SqlConnection con = new SqlConnection(conn))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
string EditView = StandardView;
switch (rblChooseEditView.SelectedValue)
{
case "1":
EditView = StandardView;
cmd.CommandText = EditView;
BindData();
break;
case "2":
EditView = CurrentView;
cmd.CommandText = EditView;
BindData();
break;
}
}
}