首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在asp.net中获取动态创建的控件的属性值

在asp.net中获取动态创建的控件的属性值
EN

Stack Overflow用户
提问于 2010-10-20 17:48:17
回答 5查看 1.2K关注 0票数 4

如何确定某个动态创建的asp.net控件的宽度?例如,我有这样的代码:

代码语言:javascript
运行
复制
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<encosia:HighslideManager ID="HighslideManager1" runat="server" FadeInOut="true"
    OutlineType="RoundedWhite" ControlBar="false" />
<table style="width: 100%; padding-left: 15px; padding-right: 15px;">
    <tr>
        <td valign="top" style="width: 50%; border-right: dotted 2px White;">
            <asp:literal id="litText" runat="server" mode="PassThrough"></asp:literal>
        </td>
        <td valign="top" style="width: 50%">
            <table style="width: 100%;" cellspacing="10">
                <tr>
                    <td valign="top" style="width: 50%;" id="imageTD" runat="server"  oninit="imageTD_OnInit">
                        <asp:literal id="litEmptyText" runat="server" mode="PassThrough"></asp:literal>
                        <asp:repeater id="Repeater1" runat="server">
                            <ItemTemplate>
                                <center>
                                    <encosia:HighslideImage ID="HighslideImage1" runat="server" Width="200px"
                                            ImageUrl='<%# Eval("ImageURL", "images/images/{0}") %>'
                                            FullImageURL='<%# Eval("ImageURL", "images/images/{0}") %>'
                                            AlternateText='Image <%# Container.ItemIndex%>'/>


                                    <asp:Label ID="imageDescriptionLabel" 
                                         runat="server" CssClass="longtext"
                                      Text= '<%# CutImageDescText(String.Format("{0}",Eval("Description")),imageTD.Width) %>' />
                                </center>
                            </ItemTemplate>
                            <SeparatorTemplate>
                                <%# ((Container.ItemIndex % 2) == 1) ? "</td></tr><tr><td valign=\"top\" style=\"width:50%;\">" : "</td><td valign=\"top\" style=\"width:50%;\">"%>
                            </SeparatorTemplate>    
                        </asp:repeater>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

我需要计算imageTD的宽度。我尝试在页面事件中计算它的宽度,但是这个属性也像其他样式属性一样是空的。()(请帮帮我!谢谢!

EN

回答 5

Stack Overflow用户

发布于 2010-10-28 19:01:28

您可以通过以下方式完成此操作:

  1. 如果你想使用" td“标签作为服务器,你需要设置"runat”of table tag为" server“并设置此表的ID
  2. 还需要设置"server

ID”tr和td标签

  1. 如果创建了td不会进入任何数据绑定控件,就像一个中继器你可以很容易地在你的服务器端

上从这个控件中获取任何属性

.aspx页面示例

代码语言:javascript
运行
复制
<table runat="server" id="tabl1">
    <tr runat="server" id="tr1">
    <td runat="server" id="td1">

    </td>
    </tr>
</table>

.aspx.cs代码示例

代码语言:javascript
运行
复制
protected void Page_Load(object sender, EventArgs e)
{
    var h = td1.Width;
}
票数 1
EN

Stack Overflow用户

发布于 2010-10-20 23:28:58

所以我不是一个专家,所以这不是一个完整的答案…从我看来它不是一个动态创建的控件,我打赌你的意思是它的大小是动态的?因为它会根据里面的内容而改变?

我用JQuery编写了一些代码,获取td的宽度并为其设置隐藏值,然后从asp.net获取该隐藏字段的值。可能有更好的方法将值从js发送到asp.net

还有一件事,因为回发,我想,试着点击按钮两次。(再说一次,也许有更聪明的人可以回答为什么会这样)

代码语言:javascript
运行
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="testing._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript" />
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="click" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:HiddenField ID="hid" runat="server" />
    </form>
    <table>
        <tr>
            <td id="image2">
                <img src="http://i38.tinypic.com/2el8jfb.jpg" />
            </td>
        </tr>
    </table> 
    <script type="text/javascript">
 $(document).ready(
 function() {
 var w = $('#image2').width();
$("#hid").val(w);
 }
 );
    </script>
</body>
</html>

 protected void click(object sender, EventArgs e)
        {
            TextBox1.Text = hid.Value;
        }

我想到了所有的服务器端,使用带有id和runat服务器的控件,但是当我通过imageTD.Width.Value后台的代码访问该图像时,结果是0,也许有人可以弄清楚为什么会这样……

真希望这对你有帮助!=)

票数 0
EN

Stack Overflow用户

发布于 2010-10-22 01:48:51

我相信你可以使用Repeater1.FindControl并找到你的控件,只要你有来自row命令的发送者e(也许你需要在preInit中添加一个代理来触发它)。您将不得不将其转换为类似于以下内容。

镜像测试=(镜像)e.Item.FindControl(“youImageName”);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3976550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档