Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
C# 在GridView中访问行_C#_Asp.net_Webforms - Fatal编程技术网

C# 在GridView中访问行

C# 在GridView中访问行,c#,asp.net,webforms,C#,Asp.net,Webforms,我有以下ASPX代码: <ItemTemplate> <asp:HyperLink ID="BRANCH_NAME" runat="server" NavigateUrl='<%# "mailto:"+Eval("OWNERS_EMAIL") %>' Text='<%# Eval("BRANCH_NAME") %>' ToolTip='<%# GetBranchAddress

我有以下ASPX代码:

<ItemTemplate>
    <asp:HyperLink ID="BRANCH_NAME" runat="server" 
          NavigateUrl='<%# "mailto:"+Eval("OWNERS_EMAIL") %>' 
          Text='<%# Eval("BRANCH_NAME") %>' 
          ToolTip='<%# GetBranchAddress() %> '> 
    </asp:HyperLink>
</ItemTemplate>

代码隐藏中的函数:

protected string GetBranchAddress(DataRow row)
{
    return "<span style=\"text-decoration:underline;\">"+ 
               row["BRANCH_NAME"].ToString().Trim() + "</span><br />" + 
               row["OWNERS_FIRST_NAME"].ToString().Trim() + " " +
               row["OWNERS_LAST_NAME"].ToString().Trim() + "<br />" + 
               row["OWNERS_EMAIL"].ToString().Trim() + "<br />" + 
               row["OWNERS_OFFICE_PHONE"].ToString().Trim() + "<br />" + 
               row["OWNERS_FAX_PHONE"].ToString().Trim();

}
受保护字符串GetBranchAddress(数据行)
{
返回“”+
行[“分支机构名称”].ToString().Trim()+“
”+ 行[“所有者姓名]。ToString().Trim()+“”+ 行[“所有者姓氏]。ToString().Trim()+”
“+ 行[“所有者\电子邮件”].ToString().Trim()+“
”+ 行[“所有者办公室电话”]。ToString().Trim()+“
”+ 第[“所有者传真电话”]行。ToString().Trim(); }
我得到的错误是:

方法“GetBranchAddress”没有采用“0”参数的重载

如何访问ASP GridView中的
,以便将其传递给函数


谢谢。

在标记中,您没有将任何参数传递给GetBranchAddress,这就是为什么会出现错误。您应该将“this”传递到方法中,其中“this”是当前操作的对象(DataRow)。比如说,

ToolTip='<%# GetBranchAddress(this) %> '
工具提示=“”

使用数据键指定要显示的字段,并传入行索引,而不是尝试将整个
数据行
传递到函数中

<asp:GridView ID="GridView1" runat="server" DataKeyNames="BRANCH_NAME, StreetAddress" ...>
在函数中,您可以访问datakey值,如下所示:

<ItemTemplate>
    <asp:HyperLink ID="BRANCH_NAME" runat="server" 
          NavigateUrl='<%# "mailto:"+Eval("OWNERS_EMAIL") %>' 
          Text='<%# Eval("BRANCH_NAME") %>' 
          ToolTip='<%# GetBranchAddress(Container.DisplayIndex) %> '> 
    </asp:HyperLink>
</ItemTemplate>
protected string GetBranchAddress(int rowIndex)
{
    return GridView1.DataKeys[rowIndex]["BRANCH_NAME"].ToString();
}

我尝试传递
但它给了我另一个错误
与'SplendidCRM.WebForms.client_home2.GetBranchAddress(System.Data.DataRow)'匹配的最佳重载方法有一些无效参数
这是个好主意,但是如果我指定列名,我也可以直接将它们传递到我的函数中,比如
GetBranchAddress(Eval(“BRANCH\u NAME”)、Eval(“BRANCH\u EMAIL”)
。无论如何,你必须在某个地方指定列名,如果它们是在标记中指定的,那么维护起来就更容易了。您这样做有什么具体原因吗?我只是想通过将尽可能多的业务逻辑保留在视图之外,使事情更“MVC”。如果愿意,您可以始终在代码隐藏中指定数据键,这将允许您将其保留在视图之外。