如何从itemTemplate gridview调用C#方法
我有3列的gridview。我需要在此gridview中再添加一列“共享”。查询数据库中没有“共享”列,我们正在通过C#方法计算它。 我有一个名为SHARE()的方法,这里我如何将SHARE的值传递给如何从itemTemplate gridview调用C#方法,c#,asp.net,gridview,itemtemplate,C#,Asp.net,Gridview,Itemtemplate,我有3列的gridview。我需要在此gridview中再添加一列“共享”。查询数据库中没有“共享”列,我们正在通过C#方法计算它。 我有一个名为SHARE()的方法,这里我如何将SHARE的值传递给itemTemplate标签 代码: public void share() { float share = 0; int tot = 0; int vol = 0; c.cmd.CommandText = "Sel
itemTemplate标签
代码:
public void share()
{
float share = 0;
int tot = 0;
int vol = 0;
c.cmd.CommandText = "Select * from MarketDetail";
c.adp.Fill(c.ds,"vt");
foreach (DataRow dr1 in c.ds.Tables["vt"].Rows)
{
tot = tot + Convert.ToInt32(dr1["TotalVolume"]);
}
foreach (DataRow dr2 in c.ds.Tables["vt"].Rows)
{
share = tot /Convert.ToInt32(dr2["TotalVolume"]);
//how assign this 'Share' value to lable in grid //
}
}
如果要将
Share()
中的值分配给Label,则需要从Share方法返回一些内容
您的方法返回-void-nothing
public string share() // Provide your return type.
{
float share = 0;
...
...
return share.ToString(); // return share value after the calculation
}
您的方法应为返回类型方法,但您将其声明为“void”类型 像这样…
public float share()
{
float share = 0;
int tot = 0;
int vol = 0;
c.cmd.CommandText = "Select * from MarketDetail";
c.adp.Fill(c.ds,"vt");
foreach (DataRow dr1 in c.ds.Tables["vt"].Rows)
{
tot = tot + Convert.ToInt32(dr1["TotalVolume"]);
}
foreach (DataRow dr2 in c.ds.Tables["vt"].Rows)
{
share = tot /Convert.ToInt32(dr2["TotalVolume"]);
//how assign this 'Share' value to lable in grid //
}
return share;
}
为什么要使用服务器端代码。您可以单独使用SQL来完成 只需在like中添加一个额外字段
Select *,sum(TotalVolume) / TotalVolume as Share from MarketDetail;
现在我想你明白我的意思了
你们可以用它来获取标签中的值
<ItemTemplate>
<asp:Label ID="lblShare" runat="server" Text='<%#Eval("Share") %>'></asp:Label>
</ItemTemplate>
谢谢所有的朋友。
现在我的代码运行良好。首先,我的方法返回单个值(即最后一个值),而我需要打印每个totalValue。
这是我的工作代码:
<ItemTemplate>
<asp:Label ID="lblShare" runat="server" Text='<%#share((Int32)Eval("TotalVolume"))%>'/>
</ItemTemplate>
在网格内部,对列使用“*”宽度功能:@anshul查看我的答案。简单的方法。我很高兴它给了你提示。:)如果它解决了你的问题,你可以把它标记为解决方案。
public string share(int tv)
{
float share = 0;
float tot = 0;
c.cmd.CommandText = "Select * from MarketDetail";
c.adp.Fill(c.ds, "vt");
foreach (DataRow dr1 in c.ds.Tables["vt"].Rows)
{
tot = tot + Convert.ToInt32(dr1["TotalVolume"]);
}
share = tot /tv ;
c.ds.Tables["vt"].Clear();
return share.ToString() +"%";
}