' CommandName="ShowImpressions" Text="Total Im-6ren">
gpt4 book ai didi

c# - 更改 GridView 中的按钮文本 -(呈现为 DataBoundLiteralControl 的 GridView ItemTemplate 按钮)

转载 作者:行者123 更新时间:2023-12-02 05:21:15 25 4
gpt4 key购买 nike

我的 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 = "此文本已更改!";

问题是:Web 控件 btnDateRange 从代码后面引用时显示为 DataBoundLiteralControl 并且我无法将其转换为按钮。

我也无法将其转换为文字。 无法将“System.Web.UI.DataBoundLiteralControl”类型的对象转换为类型“System.Web.UI.WebControls.Literal”。

并将其转换为 DataBoundLiteralControl 有效,但不允许我更改文本:System.Web.UI.DataBoundLiteralControl.Text' cannot be assigned to -- it is read only

有谁知道为什么我的 HTML 按钮被呈现为 DataBoundLiteralControl ?有没有人对我有任何想法可以为我尝试?

如有任何建议,我们将不胜感激!

最佳答案

1) 您可以将按钮带回 asp:button 并使用 OnClientClick 而不是 OnClick。在这种情况下,OnClick 用于服务器事件处理而不是 javascript。要使用 javascript,请使用 OnClientClick

2) 将 runat="server"添加到您的 html 按钮

更新:我专注于从代码隐藏访问控件。试试这个 javascript

<input type="button" onclick='<%# String.Format("javascript:document.getElementById('hdnImpressionTagID').value = '{0}'", Eval("ImpressionTagID")) %>' />

更新

我同意你的看法,这并不容易。您可以将分配 onclick 移动到代码隐藏并处理不匹配的引号

1) <asp:Button runat="server ID="btnDateRange" Text="Date Range" />

2) 在行数据绑定(bind)中分配onclick

protected void GridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
Button btnDateRange = e.Row.FindControl("btnDateRange") As Button; //if you used Asp:Button
btnDateRange.Attributes["onclick"] = "javascript:document.getElementById('hdnImpressionTagID').value = '"+e.Row.DataItem("ImpressionTagID")+"'";
}

关于c# - 更改 GridView 中的按钮文本 -(呈现为 DataBoundLiteralControl 的 GridView ItemTemplate 按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13802510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com