C# 由于加载GridView和同一页面中的DropDownList,分页失败。回发

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

我有一个gridview,它需要在回发中,才能通过选中复选框执行更新。问题是我有一个使用DropDownList的过滤器,如果我将PopularGVDuplicatas()放在加载项目的同一回发中,过滤器将不起作用,并且分页也不起作用。如果我将PopularGVDuplicatas()放在回发之外,则选中时的复选框将无法正常工作。有人能帮忙吗

代码:

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();
}