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.
}
}
}
通常我会在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 + " ";
}