0

当根据文本内容的长度显示文本进行编辑时,如何在网格视图的 asp:BoundField 中动态切换文本框和文本区域。

4

2 回答 2

1

我们可以通过 css 风格做到这一点,

页面:

<style type="text/css">
  #input
    {
        -moz-appearance: textfield;
        -webkit-appearance: textfield;
        background-color: white;
        background-color: -moz-field;
        border: 1px solid darkgray;
        font: -moz-field;
        font: -webkit-small-control;
        width: 250px;
    }
</style>
<body>
   <div>
    <asp:GridView ID="gv" AutoGenerateColumns="false" runat="server"> 
        <Columns>
            <asp:TemplateField HeaderText="Text">
                <ItemTemplate>
                    <div id="input" contenteditable></div>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>
</body>

aspx.cs 页面:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        }
    }

    public void BindGrid()
    {
        List<string> lst = new List<string>();
        lst.Add("Name1");
        lst.Add("Name2");
        gv.DataSource = lst;
        gv.DataBind();
    }

否则 onkeypress 事件我们可以检查文本框字符串的长度,如果长度超过一行,那么我们可以更改 css。希望这对您有所帮助。

于 2013-05-20T09:35:55.480 回答
0

在 gridview 的数据绑定事件上,检查内容的长度,然后将 asp:textbox 的 TextMode 更改为 textarea 的 multiline 和 textbox 的 singleine

于 2013-05-21T09:05:16.017 回答