开发者

Eval script for server side control's ID property?

开发者 https://www.devze.com 2022-12-13 21:10 出处:网络
Using 开发者_开发百科the following Eval script for setting ID property causes error. Error message: the server tag is not well formed.

Using 开发者_开发百科the following Eval script for setting ID property causes error. Error message: the server tag is not well formed.

 <asp:Panel runat="server" ID="<%# Eval("RENTER_ID") %>" Visible="false">

Even replacing "" with '' of ID property generates error. While using '', its error message

"The ID property of a control can only be set using the ID attribute in the tag and a simple value. Example: <asp:Button runat="server" id="Button1" />"

Any ideas to solve this?


You can't do it.

Why do you need to? If it's so you can reference it at some point, you can access the client-side id via the property ClientID.

Example, as requested:

<asp:Repeater runat="server" ID="repFoo">
    <ItemTemplate>
        <asp:Panel runat="server" ID="pnlFoo">
            <input type = "button"
                onclick = "alert('<%# Container.FindControl("pnlFoo").ClientID %>');"
                value   = "click to get id for <%# Container.ItemIndex %>" />
        </asp:Panel>
    </ItemTemplate>
</asp:Repeater>


As Silky said, you can't do this. The attributes can't be dynamic in none code behind. One solution is to subclass the Panel:

public class MyPanel : Panel
{
    public override string ID
    {
        get
        {
            return "get from my datasource";
        }
        set
        {
            // noop
        }
    }
}


Do you need to use a panel? Could you just use html?

<div id="<%# Eval("RENTER_ID") %>" style="display:none"></div> 


Try this

 <div runat="server" id='<%# Eval("IsVisible") %>' visible="false"> </div>

Try this - It will not popup any messages if you do formatting, but it will show Design time error.

<asp:Panel runat="server" ID='<%# Eval("RENTER_ID") %>' Visible="false">


asp.net controls' ID doesn't support the binding. Try to use HTML controls to work around.


It almost always when asp.net fails , comes Jquery into the field to set the situation up ;) . you can do this trick for example :

In HTML:

<div>
<input type="file" id="whatever" class="uploader" runat="server" />
<span id="<%#Eval("ID")%>'"></span>
</div>

Jquery:

    $('.uploader').on('change', function () {
        var id = $(this).next('span').attr('id');
     });    
0

精彩评论

暂无评论...
验证码 换一张
取 消