gridview selected value

本文关键字:value selected gridview | 更新日期: 2023-09-27 18:22:10

我有一个名为gvSector的网格视图。该表的字段如下:

Sector Name    Amount Invested
Finance        300000
Properties     100000
...            ...

条件:如果在特定行业的投资额超过30%我的标签lbSector将显示扇区名称。

我在.cs文件中的代码如下。

double TotalInvestments = 0.0;
for (int i = 0; i < gvSector.Rows.Count; i++)
{
    if (gvSector.Rows.Count > 0)
    {   
        double SAmt = Convert.ToDouble(gvSector.Rows[i].Cells[1].Text);
        TotalInvestments += SAmt;
        double PercentSAmt = (SAmt / TotalInvestments) * 100;
        if (PercentSAmt > 25.0)
        {
            //I've no idea what to put here. It is supposed to show the sector(s) that is more than 25% from the gridview.
        }    
    }
}

gridview selected value

通常我会在DBMS中进行这样的计算(例如在存储过程或表值函数中)。这比将其与ASP.NET应用程序的GridView硬链接更快、可重用性更好。

我不确定你是只想在GridView中显示顶部扇区还是全部,但标签应该只显示属于顶部扇区的名称。

如果是后者,则应该在GridView的RowDataBound中执行此操作。在这种方式下,您只有一个循环,并且只有数据绑定:

protected void Grid_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) {
        var data = (DataRowView)e.Row.DataItem;
        var lbSector = (Label)e.Row.FindControl("lbSector");
        var amount = (int)data("Amount");
        var amountOverAll = (long)data.DataView.Table.Compute("SUM(Amount)", null);
        if (amount * 100 / amountOverAll >= 30) {
            lbSector.Text = data("Sector").ToString();
        }
    }
}

您可以使用DataTable.Compute来计算这个值,如上所示。

1)在for循环中执行以下操作将获得所需内容。

        double SAmt = Convert.ToDouble(gvSector.Rows[i].Cells[1].Text);
        TotalInvestments += SAmt;
        double PercentSAmt = (SAmt / TotalInvestments) * 100;

而是预先在其他地方计算CCD_ 2。

  • 使用linq:如何计算一个DataTable';LINQ中的s列(到数据集)?

  • 使用DataTable.Compute:msdn post 的wihtout linq

2) 如果您想有条件地显示行,可以在绑定之前更改GridViewRow的可见性或从DataTable中删除该行,依此类推

 double PercentSAmt = (SAmt / TotalInvestments) * 100;
 if (PercentSAmt > 30.0)
 {           
    gvSector.Rows[i].Cells[1].Text
 } 

编辑:如果你想列出标签中的扇区(尽管我不知道你将如何构建文本)

double PercentSAmt = (SAmt / TotalInvestments) * 100;
 if (PercentSAmt > 30.0)
 {           
    lbSector.Text +=  gvSector.Rows[i].Cells[0].Text + " ";
 }