GridView コントロールの列に 2 つのボタンがあります。
<asp:TemplateField ItemStyle-CssClass="minPadding">
<ItemTemplate>
<input id="btnDateRange" type="button" value="Date Range" class="JQDatePicker SmallText FloatRight WrapButtonText" onclick="javascript:document.getElementById('hdnImpressionTagID').value = '<%# Eval("ImpressionTagID") %>'"/>
<asp:Button ID="btnShowImpressions" CommandArgument='<%# Eval("ImpressionTagID") %>' CommandName="ShowImpressions" Text="Total Impressions" runat="server" UseSubmitBehavior="false" CssClass="SmallText FloatLeft WrapButtonText" Width="80px" />
</ItemTemplate>
</asp:TemplateField>
最初のボタンが HTML コントロールである理由は、asp:button を使用しようとすると、onclick イベントが機能しないためです (javascript 呼び出し内の #Eval ステートメントに注意してください)。サーバー コントロールを使用すると、次のエラーが表示されます。タグの形式が正しくありません'
これらのボタンのテキストをコード ビハインドから変更したいと考えています。(私はc#を使用しています)
正しい行インデックスが見つかり、それらがセル 5 にあることがわかりました。
asp:Button コントロールのテキストを次のように設定できます...
Button btn = ((Button)gridImpressionTags.Rows[i].Cells[5].FindControl("btnDateRange"));
btn.Text = "This Text has changed!";
btnDateRange
問題は次のとおりです。コード ビハインドから参照されたDataBoundLiteralControl
ときにWeb コントロールが として表示され、ボタンとしてキャストできません。
また、リテラルとしてキャストすることもできません。Unable to cast object of type 'System.Web.UI.DataBoundLiteralControl' to type 'System.Web.UI.WebControls.Literal'.
DataBoundLiteralControl としてキャストすると機能しますが、テキストを変更することはできません。 System.Web.UI.DataBoundLiteralControl.Text' cannot be assigned to -- it is read only
HTML ボタンが DataBoundLiteralControl としてレンダリングされている理由を知っている人はいますか? 私のために試してみたいアイデアはありますか?
どんな提案でも大歓迎です!