13

次のコードを見てください。

<asp:HyperLinkField 
    DataNavigateUrlFields="NameID" 
    DataNavigateUrlFormatString="names.aspx?nameid={0}"
    DataTextField="name" 
    HeaderText="Name" 
    ItemStyle-Width="100px"
    ItemStyle-Wrap="true" />

次のページに移動するには、name id のみが必要です。グリッドビューにない他の 2 つのパラメーターを含めるにはどうすればよいですか。私が使用しているナビゲート URL は、グリッドビューに既に存在するキーワードと、データベース テーブルからの他の 2 つのパラメーターを取得する必要があります。これらすべてのコードを使用してみました。私にとっては何もうまくいきませんでした。

<asp:HyperLinkField DataTextField="Keyword" DataNavigateUrlFields="Keyword"
    DataNavigateUrlFormatString="KeywordSrchSumDtl.aspx?Keyword={0}&State={1}&City={2}"
    HeaderStyle-VerticalAlign="Bottom" ItemStyle-HorizontalAlign="center" />

州と都市は GridView にはありませんが、データ テーブルで使用できるため、上記のコードは使用できません。

次のコードも使用してみましたが、機能しません。

 <asp:TemplateField HeaderText="Keyword"  ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <asp:HyperLink ID="link" runat="server" NavigateUrl='<% # "KeywordSrchSumDtl.aspx?Keyword="Eval("Keyword")+"&State="+Request.QueryString["State"]%>' Text='<%# Eval("Keyword") %>'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

私もこれを試しました:

        <asp:HyperLink ID="Link1" runat="Server" NavigateUrl='<%#redirectURL()+Server.UrlEncode((Eval("Keyword")).ToString())%>' Text='<%# DataBinder.Eval(Container.DataItem,"Keyword") %>'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

.aspx.cs

return "KeywordSrchSumDtl.aspx?Keyword=" + 
    //I DONNO HOW TO CALL THE KEYWORD HERE//
    + "&State=" + System.Web.HttpContext.Current.Request.QueryString["State"]
    + "&City=" + System.Web.HttpContext.Current.Request.QueryString["City"];

これを解決する方法がわかりません。

4

5 に答える 5

20

DataNavigateUrlFieldsプロパティのカンマ区切りの値を、パラメータのフィールドで使用します"KeywordSrchSumDtl.aspx?Keyword={0}&State={1}&City={2}"

<asp:HyperLinkField DataNavigateUrlFields="Keyword,State,City"
                    DataNavigateUrlFormatString="KeywordSrchSumDtl.aspx?Keyword={0}&State={1}&City={2}" 
                    Text="View Details" />

いくつかの例:

.NET 2.0 Grid-View のハイパーリンク フィールドの DataNavigateUrlFormatString で 2 つの引数を渡す

ASP.NET を使用して GridView から別のページに複数の値を渡す

編集:

の場合NavigateUrlの HyperLink のセットRowDataBoundGridView

<asp:GridView ID="GridView1" runat="server" 
              AutoGenerateColumns="False" 
              DataKeyNames="Keyword"
              DataSourceID="SqlDataSource1" 
              onrowdatabound="GridView1_RowDataBound">
   <asp:TemplateField HeaderText="Keyword"  ItemStyle-HorizontalAlign="Center"          FooterStyle-HorizontalAlign="Center">
      <ItemTemplate>
          <asp:HyperLink ID="link" runat="server" Text='<%# Eval("Keyword") %>' />
      </ItemTemplate>
    </asp:TemplateField>
    .......
</asp:GridView>

コードビハインド:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
 if (e.Row.RowType == DataControlRowType.DataRow) 
 { 
    HyperLink hl = (HyperLink)e.Row.FindControl("link"); 
    if (hl != null) 
    { 
        DataRowView drv = (DataRowView)e.Row.DataItem; 
        string keyword = drv["Keyword"].ToString(); 
        string state = Request.QueryString["State"]; 
        string city = Request.QueryString["City"]; 
        hl.NavigateUrl = "~/KeywordSrchSumDtl.aspx?Keyword=" + keyword + "&State=" + Server.UrlEncode(state) + "&City=" + Server.UrlEncode(city); 
    } 
 } 
}
于 2012-10-10T16:55:50.427 に答える
-1
Some time we need to pass multiple parameters with hyperlink in Gridview, datagrid or any data list control then we can use following code:-</br> 

**CODE:-** 
<asp:GridView ID="gvFin" runat="server" CellPadding="1" AutoGenerateColumns="false"> 

<Columns>
     <asp:TemplateField ItemStyle-Width="4%" HeaderStyle-Width="4%" SortExpression="CDL"
    HeaderText="CDL#" HeaderStyle-Font-Bold="true">
                                                <ItemTemplate>
   <asp:HyperLink ID="lnk1" runat="server" 
   Text='<%# DataBinder.Eval(Container.DataItem,"TestValue") %>'
   NavigateUrl='<%# "javascript:ShowACP(\"" + DataBinder.Eval(Container.DataItem, "ID")     + "\",\"" + DataBinder.Eval(Container.DataItem,"ACCOUNTPLAN") + "\");" %>'                                                  ForeColor="Blue" /  </ItemTemplate>
 </asp:TemplateField>


**JavaScript Function**

function ShowACP(id, acplabel) 
{            if (acplabel == "No")
{
                window.location = "#";
            }
            else</br> 
                window.location = "Default.aspx?gid=" + id;
        }
于 2013-01-07T19:15:16.237 に答える
-1

最後に、次のコードでナビゲートします。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
 if (e.Row.RowType == DataControlRowType.DataRow) 
 { 
      HyperLink hl = (HyperLink)e.Row.FindControl("Link");
      if (hl != null)
      {
           DataRowView drv = (DataRowView)e.Row.DataItem;
           string keyword = drv["Keyword"].ToString().Trim();
           string state = strState.ToString().Trim();
           string city = strCity.ToString().Trim();                 
           hl.NavigateUrl = "KeywordSrchSumDtl.aspx?Keyword=" + keyword + "&Geo=" + geo                             + "&Site=" + site;
       }
       }
      }

助けてくれてありがとう。

于 2012-10-12T16:52:01.800 に答える