私はドロップダウンとグリッドビューを持っています。ドロップダウンで選択した値に応じて、gridviewの第1列に指定されたハイパーリンクのNaviagetURLを更新します。だから私は動的にハイパーリンクのnavigateurlを更新するonRowDataBound関数を使用しています。そして、私はOnRowDataBound関数内のクエリ文字列として使用するために、最初の列 "ID"の値を取得しようとしていますが、私はこの作業を取得することができません。OnRowDataBound関数で特定の列の値を取得する方法は?
最初の列のハイパーリンクをクリックすると、クエリ文字列には変数IDに値が割り当てられません。したがって、URLは単にhttp://localhost/JobCosting/EditSavedTicket.aspx?ID=
に解決されます。ハイパーリンクをクリックすると開くURLは、クエリ文字列の変数IDに割り当てられた第1列に指定された値を持つ必要があります。 e.Row.Cells [1] .Textまたはe.Row.Cells [2] .Textを使用すると、列値が正しく取得されていますが、取得されていない列0の値が必要です。
<asp:GridView ID="GridView2" runat="server" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="Saved_Work" OnRowDataBound="update_url"
Style="float: left; font-size: small; position: relative;
width: 82%; position: relative; top: -10px; height: 40px; font-size: small; text-align: left;
left: 30px;" align="left">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:HyperLink ID="Continue_SavedWork" runat="server" NavigateUrl='<%# Eval("ID", "~/EditSavedJob.aspx?ID={0}") %>'
Text='<%# Eval("ID") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UserID" HeaderText="User" SortExpression="UserID" />
<asp:BoundField DataField="Date_Created" HeaderText="Last_Updated_On" SortExpression="Date_Created" />
</Columns>
</asp:GridView>
コード後ろ:私はe.Row.Cells [0]の.textある文字列IDの長さをチェックすると、それはゼロ
GridViewのある
protected void update_url(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//string NavigateUrl="<%# Eval('ID', 'EditSavedTicket.aspx?ID={0}) %>";
string id = e.Row.Cells[0].Text;
HyperLink hp = (HyperLink)e.Row.FindControl("Continue_SavedWork");
if (SavedWorkDD.SelectedValue.ToString() == "Tickets")
hp.NavigateUrl = string.Format("EditSavedTicket.aspx?ID={0}", id);
}
}
何が問題なのですか?何が起こるのですか? –
こんにちは@MarkMiller、私はポストを更新しました。 –
なぜOnRowDataBoundイベントハンドラが必要ですか?イベントハンドラを削除すると、データバインディングによってURLが期待どおりに設定されます。 – Markus