当我尝试在asp.net中获取DropDownList控件的宽度时,为什么我得到结果为零?

时间:2011-03-01 06:43:52

标签: asp.net

单击button1后,显示0,为什么?如何获得DropDownList控件的正确宽度?谢谢!

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <asp:DropDownList ID="DropDownList1" runat="server">
            <asp:ListItem>Item 1</asp:ListItem>
            <asp:ListItem>Item 2</asp:ListItem>
        </asp:DropDownList>
    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Text = DropDownList1.Width.Value.ToString();
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为未设置值Width。在html中,如果未设置宽度值,则让浏览器选择大小。

此外,asp.net引擎只有主机属性才能呈现正确的Html。如果你查看文本框的代码,你会看到如果你放了一个witdh,它会产生一个style =“width:yourvalue”。 ASP.net在服务器端运行,因此它不知道控件的实际大小。

如果您确实需要下拉列表的客户端大小,请明确指定它,或使用一些自定义javascript来计算控件的实际大小,然后将计算大小传递给隐藏字段。在后面的代码中,您可以从Page.Request.Form集合中获取值。 如果您需要进一步解释,请澄清您的需求。