C# 由于加载GridView和同一页面中的DropDownList,分页失败。回发
我有一个gridview,它需要在回发中,才能通过选中复选框执行更新。问题是我有一个使用DropDownList的过滤器,如果我将PopularGVDuplicatas()放在加载项目的同一回发中,过滤器将不起作用,并且分页也不起作用。如果我将PopularGVDuplicatas()放在回发之外,则选中时的复选框将无法正常工作。有人能帮忙吗 代码:C# 由于加载GridView和同一页面中的DropDownList,分页失败。回发,c#,asp.net,.net,gridview,webforms,C#,Asp.net,.net,Gridview,Webforms,我有一个gridview,它需要在回发中,才能通过选中复选框执行更新。问题是我有一个使用DropDownList的过滤器,如果我将PopularGVDuplicatas()放在加载项目的同一回发中,过滤器将不起作用,并且分页也不起作用。如果我将PopularGVDuplicatas()放在回发之外,则选中时的复选框将无法正常工作。有人能帮忙吗 代码: private static string strCon=ConfigurationManager.ConnectionStrings[“stri
private static string strCon=ConfigurationManager.ConnectionStrings[“string”].ConnectionString;
私有字符串SQL=“select”;
私有双somaSelecionados=0;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
ddlFiltro.Items.Insert(0,新列表项(“Somente abertas”);
插入(1,新的清单项目(“Jápagas”);
插入(2,新列表项(“AMBA”);
PopularGVDuplicatas();
}
}
公共无效的PopularGVDuplicatas()
{
MySqlConnection conn=新的MySqlConnection(strCon);
if(ddlFiltro.Text.Equals(“Somente abertas”))
{
SQL=“选择”;
}
else if(ddlFiltro.Text.Equals(“Jápagas”))
{
SQL=“选择”;
}
else if(ddlFiltro.Text.Equals(“Ambas”))
{
SQL=“选择”;
}
其他的
{
SQL=“选择”;
}
MySqlDataAdapter=新的MySqlDataAdapter(SQL,conn);
DataTable dt=新的DataTable();
conn.Open();
if(conn.State==System.Data.ConnectionState.Open)
{
适配器填充(dt);
}
gvDuplicatas.AllowPaging=true;
gvDuplicatas.PageSize=100;
gvReplicatas.PagerSettings.Position=PagerPosition.TopAndBottom;
gvDuplicatas.PagerSettings.Mode=PagerButtons.NumericFirstLast;
gvDuplicatas.PagerSettings.PageButtonCount=50;
gvreplications.PagerStyle.CssClass=“分页ys”;
gvDuplicatas.PagerStyle.HorizontalAlign=HorizontalAlign.Center;
gvDuplicatas.DataSource=dt;
gvReplicatas.DataBind();
}
受保护的void gvreplicas_PageIndexChanging(对象发送方,GridViewPageEventArgs e)
{
gvDuplicatas.PageIndex=e.NewPageIndex;
gvDuplicates.SelectedIndex=-1;
PopularGVDuplicatas();
}
受保护的void gvreplicas_RowDataBound(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
if(DataBinder.Eval(e.Row.DataItem,“diasatraso”)!=DBNull.Value)
{
string data=DataBinder.Eval(例如Row.DataItem,“dtpagamento”).ToString();
字符串diasatraso=DataBinder.Eval(例如Row.DataItem,“diasatraso”).ToString();
如果((!ValidaData(data))&&((Convert.ToInt16(diasatraso))==0))
{
e、 Row.ForeColor=System.Drawing.Color.FromName(“#0000A0”);
}
如果(!ValidaData(data))&&((Convert.ToInt16(diasatraso))<0),则为else
{
e、 Row.ForeColor=System.Drawing.Color.FromName(“”);
}
如果(!ValidaData(data))&&((Convert.ToInt16(diasatraso))>0),则为else
{
e、 Row.ForeColor=System.Drawing.Color.FromName(“#FF0000”);
}
否则,如果((有效数据(数据)))
{
e、 Row.ForeColor=System.Drawing.Color.FromName(“#468647”);
}
}
bool-ativo=真;
ativo=((复选框)e.Row.FindControl(“chkSelecionar”)。选中;
if(ativo)
{
e、 Row.BackColor=System.Drawing.Color.FromName(“#ffffb3”);
}
}
}
公共bool ValidaData(字符串数据)
{
DateTime resultado=DateTime.MinValue;
if(DateTime.TryParse(数据,输出结果))
返回true;
返回false;
}
受保护的void chkSelecionar_CheckedChanged(对象发送方,事件参数e)
{
复选框chkSelecionar=(复选框)发送方;
GridViewRow行=(GridViewRow)chkSelecionar.NamingContainer;
字符串A=行。单元格[1]。文本;
字符串VRA=行。单元格[6]。文本;
bool status=chkSelecionar.Checked;
MySqlConnection conn=新的MySqlConnection(strCon);
如果(状态)
{
string SQL=“更新命令”;
MySqlCommand cmdUpdate=新的MySqlCommand(SQL,conn);
cmdUpdate.Parameters.AddWithValue(“@replica”,Convert.ToInt32(replica));
conn.Open();
cmdUpdate.ExecuteOnQuery();
康涅狄格州关闭();
//somaSelecionados+=Convert.ToDouble(vra);
//lblValorTotal.Text=somaSelecionados.ToString();
}
其他的
{
string SQL=“更新命令”;
MySqlCommand cmdUpdate=新的MySqlCommand(SQL,conn);
cmdUpdate.Parameters.AddWithValue(“@replica”,Convert.ToInt32(replica));
conn.Open();
cmdUpdate.ExecuteOnQuery();
康涅狄格州关闭();
}
PopularGVDuplicatas();
}
已解决。
我将PopularGVDuplicatas()放在事件ddlFiltro_text中并更改了它。能否先从页面加载中删除PopularGVDuplicatas()并查看选中的项目?如果删除PopularGVDuplicatas(),gridview将不收费。复选框在gridview中。你能定义“不工作”吗?他们只是什么都不做吗?它工作,但不会返回正确的结果。如果(!Page.IsPostBack)我的筛选器ddlFiltro正常工作,但筛选器中的复选框不再工作,则我将PopularGVDuplicatas()保留在条件之外。如果我将PopularGVDuplicatas()保留在条件If(!Page.IsPostBack)内,我的ddlFiltro筛选器将无法正常工作。
private static string strCon = ConfigurationManager.ConnectionStrings["string"].ConnectionString;
private string SQL = "select";
private double somaSelecionados = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlFiltro.Items.Insert(0, new ListItem("Somente abertas"));
ddlFiltro.Items.Insert(1, new ListItem("Já pagas"));
ddlFiltro.Items.Insert(2, new ListItem("Ambas"));
PopularGVDuplicatas();
}
}
public void PopularGVDuplicatas()
{
MySqlConnection conn = new MySqlConnection(strCon);
if (ddlFiltro.Text.Equals("Somente abertas"))
{
SQL = "select";
}
else if (ddlFiltro.Text.Equals("Já pagas"))
{
SQL = "select";
}
else if (ddlFiltro.Text.Equals("Ambas"))
{
SQL = "select";
}
else
{
SQL = "select";
}
MySqlDataAdapter adapter = new MySqlDataAdapter(SQL, conn);
DataTable dt = new DataTable();
conn.Open();
if (conn.State == System.Data.ConnectionState.Open)
{
adapter.Fill(dt);
}
gvDuplicatas.AllowPaging = true;
gvDuplicatas.PageSize = 100;
gvDuplicatas.PagerSettings.Position = PagerPosition.TopAndBottom;
gvDuplicatas.PagerSettings.Mode = PagerButtons.NumericFirstLast;
gvDuplicatas.PagerSettings.PageButtonCount = 50;
gvDuplicatas.PagerStyle.CssClass = "pagination-ys";
gvDuplicatas.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
gvDuplicatas.DataSource = dt;
gvDuplicatas.DataBind();
}
protected void gvDuplicatas_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvDuplicatas.PageIndex = e.NewPageIndex;
gvDuplicatas.SelectedIndex = -1;
PopularGVDuplicatas();
}
protected void gvDuplicatas_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
if (DataBinder.Eval(e.Row.DataItem, "diasatraso") != DBNull.Value)
{
string data = DataBinder.Eval(e.Row.DataItem, "dtpagamento").ToString();
string diasatraso = DataBinder.Eval(e.Row.DataItem, "diasatraso").ToString();
if ((!ValidaData(data)) && ((Convert.ToInt16(diasatraso)) == 0))
{
e.Row.ForeColor = System.Drawing.Color.FromName("#0000A0");
}
else if ((!ValidaData(data)) && ((Convert.ToInt16(diasatraso)) < 0))
{
e.Row.ForeColor = System.Drawing.Color.FromName("");
}
else if ((!ValidaData(data)) && ((Convert.ToInt16(diasatraso)) > 0))
{
e.Row.ForeColor = System.Drawing.Color.FromName("#FF0000");
}
else if ((ValidaData(data)))
{
e.Row.ForeColor = System.Drawing.Color.FromName("#468647");
}
}
bool ativo = true;
ativo = ((CheckBox)e.Row.FindControl("chkSelecionar")).Checked;
if (ativo)
{
e.Row.BackColor = System.Drawing.Color.FromName("#ffffb3");
}
}
}
public bool ValidaData(string data)
{
DateTime resultado = DateTime.MinValue;
if (DateTime.TryParse(data, out resultado))
return true;
return false;
}
protected void chkSelecionar_CheckedChanged(object sender, EventArgs e)
{
CheckBox chkSelecionar = (CheckBox)sender;
GridViewRow row = (GridViewRow)chkSelecionar.NamingContainer;
string duplicata = row.Cells[1].Text;
string vrduplicata = row.Cells[6].Text;
bool status = chkSelecionar.Checked;
MySqlConnection conn = new MySqlConnection(strCon);
if (status)
{
string SQL = "update command";
MySqlCommand cmdUpdate = new MySqlCommand(SQL, conn);
cmdUpdate.Parameters.AddWithValue("@duplicata", Convert.ToInt32(duplicata));
conn.Open();
cmdUpdate.ExecuteNonQuery();
conn.Close();
//somaSelecionados += Convert.ToDouble(vrduplicata);
//lblValorTotal.Text = somaSelecionados.ToString();
}
else
{
string SQL = "update command";
MySqlCommand cmdUpdate = new MySqlCommand(SQL, conn);
cmdUpdate.Parameters.AddWithValue("@duplicata", Convert.ToInt32(duplicata));
conn.Open();
cmdUpdate.ExecuteNonQuery();
conn.Close();
}
PopularGVDuplicatas();
}