0

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

谢谢你。

4

2 回答 2

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
        }
    }
}
于 2013-10-08T16:36:40.440 回答
0

是的,你可以在任何你想要的情况下做到这一点。

每个事件接收的参数是:

(object sender, EventArgs e)

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

(sender as TextBox).BorderStyle = System.Windows.Forms.BorderStyle.None; //or what ever you want
于 2013-10-08T16:28:52.627 回答