2

私はプログラミングが初めてです。GridView を作成し、SqlDataSource を使用してバインドしました。グリッドは、ハイパーテキスト リンクを含む、SQL Server データベースからのいくつかの変数を提示します。

特定のフィールドについて、次のことを行う必要があります: - データベース フィールド「Journal_title」を評価します - それを長い文字列の一部として TemplateField.NavigateUrl に挿入します - 別のフィールド (「Indexed_NIH」) が NULL の場合はリンクを非表示にします

文字列の構文は正しく、1 つのタイトルを挿入しても機能しますが、データベースからすべてのタイトルを読み取って URL に挿入する必要があります。

私の現在のコードは、リンク テキストを適切なレコードに正常に表示します (つまり、「Indexed_NIH != NULL の場合)」が、NavigateUrl が正しく表示されません。

どんな提案も歓迎します - 私はこれが初めてであることを覚えておいてください!

<asp:TemplateField HeaderText="PubMed">
<ItemTemplate>
        <asp:HyperLink ID="lnkPubMed" runat="server" Text="S" Target="_blank" NavigateUrl='http://www.ncbi.nlm.nih.gov/pubmed?term="<%# Eval("Journal_title") %>"[Journal]) AND ("last 3 years" [PDat])"' Visible='<%# Convert.ToString(Eval("Indexed_NIH")) == "True" ? true : false %>' >
    </asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

コードビハインドには何もありません。

4

3 に答える 3

1

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

結局、私は現在のコードを維持することができました、そして多くの試行錯誤の後で(!!!)私はこれが私が探していたものを私に与えることを発見しました:

<asp:TemplateField HeaderText="PubMed">
<ItemTemplate>
<asp:HyperLink ID="lnkPubMed" runat="server" Text="S" Target="_blank" NavigateUrl='<%# "http://www.ncbi.nlm.nih.gov/pubmed?term=" + (Eval("Journal_title")) + "[Journal] (\"Last 3 years\"[PDat])" %>' Visible='<%# Convert.ToString(Eval("Indexed_NIH")) == "True" ? true : false %>' >
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>

私の問題の中には次のようなものがありました。URLに文字列を正しく追加します。そしてもちろん経験不足!

改めて心から感謝します!

于 2012-07-13T15:30:49.737 に答える
1

良い方法はRowDataBound、グリッド コントロールのイベントを利用して、リンクをハイパーリンク ボタンに割り当てることです。

protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        object[] dataitems = ((DataRowView)e.Row.DataItem).Row.ItemArray;
        HyperLink hl = (HyperLink)e.Row.FindControl(ControlName);
        if(hl!=null)
        {
          //write code to assing value to link
        }
    }
}
于 2012-07-12T15:42:58.887 に答える
0

行データバインド イベントで GridView のすべての項目を読み取ることができます。行データバインド イベントをグリッド ビューに追加します。

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{

if(e.Row.RowType == DataControlRowType.DataRow)
{
  //Here in cell specify the index of link button
    string text = e.Row.Cells[0].Text 

 }

}
于 2012-07-12T15:45:22.703 に答える