【问题标题】:Adding border to textbox in asp gridview在asp gridview中为文本框添加边框
【发布时间】:2013-10-08 16:21:59
【问题描述】:

我目前正在构建一个 ASP.NET GridView,其中来自特定列的值必须可以通过单击直接进行编辑。

我设法做到了这一点:

 <asp:TemplateField HeaderText="<%$Resources:i18n, Projets_Tableau_Désengagement %>" ItemStyle-Width="1%" ItemStyle-HorizontalAlign="Center" SortExpression="Comments">
     <ItemTemplate>
         <asp:TextBox ID="Disengagement" runat="server" Text='<% #Bind("Disengagement") %>' 
          BackColor="Transparent" BorderStyle="None" OnTextChanged="OnDisengagementChanged" AutoPostBack="true" /> 
     </ItemTemplate>
  </asp:TemplateField>

一切正常,它完全符合我的要求,一个没有边框的文本框,看起来像一个标签并且是可编辑的。

但我的问题是,当点击它时,我希望有边框。我尝试了许多实现 javascript 或 CSS 的解决方案,但它们似乎都不起作用(可能是因为我缺乏 Web 编程技能)。

由于存在服务器端处理的“TextChanged”事件,我将在用户更改文本框中的文本后删除边框,一切都应该开箱即用。

但是有没有办法在代码隐藏中添加边框“OnClick”?

谢谢。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    是的,您可以在任何您想要的情况下进行。

    每个事件接收的参数是:

    (object sender, EventArgs e)
    

    sender 是引发事件的组件的引用。您只需要这样做:

    (sender as TextBox).BorderStyle = System.Windows.Forms.BorderStyle.None; //or what ever you want
    

    【讨论】:

    • 如何使用发件人?我的意思是,代码隐藏中的方法定义是什么?
    • @ElCapitaine 你只需要创建一个事件方法,然后复制粘贴我答案的最后一行代码。
    【解决方案2】:

    在我看来,您可以使用 row 命令,如下所示:

    <asp:GridView OnRowCommand="gvOnRowCommand" .../>
    

    在你的控制下

    <asp:TextBox CommandName="AnyName" ... />
    

    在后面的代码中

    protected void gvOnRowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "AnyName")
            {
                //your code to add border
            }
        }
    }
    

    【讨论】:

    • 单击文本框时不会触发“OnRowCommand”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2017-12-17
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多