【问题标题】:How can I access and set the properties of span control from code behind?如何从后面的代码访问和设置跨度控件的属性?
【发布时间】:2016-03-28 12:19:11
【问题描述】:

这是我可以用标签控件做的事情。

Label mylabel = (Label)e.Row.FindControl("label1");
myLable.Text="";

我想对跨度和输入控件做同样的事情。这是我尝试过的,但它不起作用。

var myspan = e.Row.FindControl("span1");
TextBox myinput=(TextBox)e.row.FindControl("Textbox1");

这是我的 aspx 代码:

<asp:TemplateField HeaderText="abc" SortExpression="val1">
    <ItemTemplate>
        <span id='myspan<%#Eval("Sno")%>'>
            <%#Eval("abc")%></span>
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Right" Width="100px" />
    <HeaderStyle HorizontalAlign="Center" Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="abc2" SortExpression="val2">
    <ItemTemplate>
        <input id='mytextBox<%#Eval("Sno")%>' type="text"
            onkeypress="return isNumberKey(event,this);" onchange="return RowUpdategrid(event,this,<%#Eval("Sno")%>,'<%#Eval("val3") %>');this.oldvalue = this.value;"
            onfocus="this.oldvalue = this.value;" maxlength="12" class="GridText" style="width: 70px"
            value='<%#Eval("CurrentYearLiquidatedPlan")%>' onpaste="return false" disabled="disabled" />
    </ItemTemplate>
    <ItemStyle HorizontalAlign="Right" />
    <HeaderStyle HorizontalAlign="Center" Width="105px" />
</asp:TemplateField>

【问题讨论】:

  • 也发布您的 aspx 标记。
  • runat="server"ClientIDMode="Predictable" 属性添加到您的span
  • 但是有一个类 Span,还是应该使用 var?
  • @Shekar.gvr - 你为什么要让 id 像这样动态? Gridview 控件无论如何都会改变这一点。这样做会使服务器端的事情变得复杂。
  • @Shekar.gvr 您可以使用varHtmlGenericControl

标签: c# asp.net gridview grid


【解决方案1】:

您只能通过e.Row.FindControl 找到服务器端控件。这意味着,您只能使用runat="server"e.Row.FindControl 访问控件。无法访问没有 runat="server" 的默认 HTML 标记。

还请查看以下 SO 帖子“How to access span id in code behind”。

<span id="expSpan" runat="server"></span>

当你想格式化你的输出时,你可以使用

<span id='myspan<%#Eval("Sno")%>'><%#Eval("abc", "0:n3")%></span>

详情请查看 MSDN 中的 Standard Numeric Format Strings

【讨论】:

  • @STORM--我正在尝试设置默认编号。通过在 rowdataboundevent 中使用 string.format() 在网格列中显示的小数。不幸的是,其中一列恰好是一个跨度。控制。那么从你所说的我可以推断出跨度控制是不可能的吗?
  • 使用 Eval 方法的第二个参数来格式化您的字符串,例如 &lt;%#Eval("Sno","{0:n}")%&gt;
  • 如果我确定小数点后要显示多少个小数,我会这样做。但是我从数据库中获取值,因此我需要通过将 {"0:N"} 与数据库值连接起来从后面的代码中执行此操作(例如:String.Format("N{0}", GridRoundoffDecimal))附言GridRoundoffDecimal 是我从数据库中得到的值。@Storm
  • 然后您可以通过代码隐藏访问跨度并修改innerHtml,如第一个链接中所述。或者您可以修改 MSDN msdn.microsoft.com/de-de/library/…! 中描述的 RowDataBound 上的值!
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 2013-07-05
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2011-05-27
相关资源
最近更新 更多