Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从itemTemplate gridview调用C#方法_C#_Asp.net_Gridview_Itemtemplate - Fatal编程技术网

如何从itemTemplate gridview调用C#方法

如何从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

我有3列的gridview。我需要在此gridview中再添加一列“共享”。查询数据库中没有“共享”列,我们正在通过C#方法计算它。 我有一个名为SHARE()的方法,这里我如何将SHARE的值传递给
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() +"%";
}