1

sqldatasource からデータを取得し、結果として SQL クエリから ID、説明、価格の 3 つの列を取得するグリッドビューがあります。

私がやりたいことは、page.aspx?id=x の形式でハイパーリンクを含む別の列を追加することです。ここで、x は最初の列の ID コードです。これはテーブルの各行に適用されます。

私はこれを行う方法を午前中ずっと探していました.RowDataBoundイベントを管理し、ハイパーリンクフィールドを使用する必要があるということだけですが、msdnの記事でさえ、実際にどのように連携するかを説明するものは他に見つかりませんでした.件名が曖昧であるか、コード ビハインドからグリッドビューを管理しているため、特定のケースに関連するヘルプがありません。結果のハイパーリンクに挿入する必要があるため、他の列から文字列にアクセスする方法もわかりませんでした。

グリッドビューの作成のためにこれまでに得たものは次のとおりです。

private void FillGrid(string qid)
{
    SqlDataSource1.ConnectionString = Connessione.connectionString;
    SqlDataSource1.SelectCommand = "SELECT art_tessuto_articolo, art_tessuto_descrizione, lipre_prezzo FROM lipre INNER JOIN listini_tessuti ON lipre.lipre_codice = listini_tessuti.listini_codice INNER JOIN art_tessuti ON lipre.lipre_articolo = art_tessuti.art_tessuto_articolo WHERE lipre_codice = @qid AND lipre_prezzo <> 0";
    SqlDataSource1.SelectParameters.Clear();
    SqlDataSource1.SelectParameters.Add("qid", qid);

    GridView1.AllowPaging = true;
    GridView1.PageSize = 500;
    GridView1.DataSource = SqlDataSource1;

    GridView1.DataBind();


}
4

3 に答える 3

1

ハイパーリンクフィールドを使用

<asp:GridView ID="GridView1" runat="server">
<Columns>
    <asp:HyperlinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="page.aspx?ID={0}" />
</Columns>
</asp:GridView>
于 2012-11-09T10:55:49.373 に答える
1

これでうまくいくはずです。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       HyperLink hlControl = new HyperLink();
       hlControl.Text = e.Row.Cells[0].Text; 
       hlControl.NavigateUrl = "page.aspx?id=" + e.Row.Cells[0].Text;
       e.Row.Cells[3].Controls.Add(hlControl);
    }
}
于 2012-11-09T10:44:44.587 に答える