在asp gridview中添加边框到文本框

时间:2013-10-08 16:21:59

标签: c# javascript asp.net

我目前正在构建一个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”?

谢谢。

2 个答案:

答案 0 :(得分:0)

是的,你可以随时随地做到这一点。

每个事件接收的参数是:

(object sender, EventArgs e)

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

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

答案 1 :(得分:0)

您可以在我看来使用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
        }
    }
}