none
各位老师,请问如何在FormView中的textbox中触发回车换行事件? RRS feed

  • 问题

  • 是这样子的,最近在做课程设计,编译的环境是Visual Studio 2005 Visual Basic
    我想在FormView下的编辑,插入中的textbox中输入大量的文本
    但无论我打多少个空格与回车,最后显示出来的都是集成一大堆,根本就不认回车跟空格
    请问应该如何触发在textbox中回车换行事件呢?
    麻烦各位老师指教一下,后天交课程设计了
    比较急!

    2009年6月9日 14:17

答案

  • <ItemTemplate>
    <asp:Label ID="x" runat="server"><%#(Eval("学生姓名")).ToString().Replace(vbCrLf, "<br/>").Replace(" ", "&nbsp;")%></asp:Label>    
    </ItemTemplate>

    【孟子E章】
    • 已标记为答案 YYing 2009年6月11日 1:57
    2009年6月10日 5:25
    版主

全部回复

  • 你显示的时候处理一下

    Replace(txt,vbCrLf,"<br/>")
    【孟子E章】
    2009年6月10日 1:04
    版主
  • 楼主,你好

    如果你是想在textbox中显示多行,可以将textbox的textmode设置成MultipleLine。


    Microsoft Online Community Support
    2009年6月10日 2:31
  • 其实输入的内容是无所谓了,你只要设置了多行,就可以多行,让然里面是\r\n,你把\r\n替换成html标记的回车就可以了<br/>。
    低调,低调
    哈哈,书出了,可以点这里购买哦。。
    2009年6月10日 2:42
    版主
  • 各位老师好
    Replace(txt,vbCrLf,"<br/>")
    这个我在网络上找到的,也都都么说
    但我对VS还不是很熟悉
    并不知道要加载到哪里
    我找不到FormView下,要显示文本的Label框
    2009年6月10日 2:56
  • 你好,
    首先你用textbox的multipleline模式,在想回车的地方回车,在label中显示的时候,你用this.FormView.FindControl("Label Id")找,然后根据西红柿的建议,替代相应的字符即可。
    Microsoft Online Community Support
    2009年6月10日 3:01
  • 嗯嗯,我现在立刻试一试 非常感谢各位的指教 愿 开心每一天
    2009年6月10日 3:24
  • 是这样子的,最近在做课程设计,编译的环境是Visual Studio 2005 Visual Basic
    我想在FormView下的编辑,插入中的textbox中输入大量的文本
    但无论我打多少个空格与回车,最后显示出来的都是集成一大堆,根本就不认回车跟空格
    请问应该如何触发在textbox中回车换行事件呢?
    麻烦各位老师指教一下,后天交课程设计了
    比较急!


      hi ,
      尝试使用textchanged事间,然后过滤一下啊,判断是否有环航操作~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://www.cnblogs.com/frank_xl
    2009年6月10日 3:32
    版主
  • 你在显示数据的时候转换一下就可以了,在数据库里或者一些存储数据的地方,有没有回车都无所谓,其实你输入后在textbox控件是这样的

    你好\n\r(回车)大家好

    然后你替换成html识别的就可以了。。只是在显示的时候做一下就行了,在数据里是怎样的我们不关心。。或者你直接插入到数据的时候替换也行。。反正都一样。。

    低调,低调
    哈哈,书出了,可以点这里购买哦。。
    2009年6月10日 3:32
    版主
  • 嗯嗯
    处理是不是用
    Replace(txt,vbCrLf,"<br/>")这句代码处理呢
    现在比较头疼的是
    怎么才能在FormView中找到我显示文本的Label呢?
    然后再加入代码给予处理
    应该不是在Page_Load里面打代码吧?
    2009年6月10日 4:39
  • 你好,
    如果你是直接绑定到Formview中,你可以在ItemTemplate中用下面这种方式绑定。
     <ItemTemplate>            
          <asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"UserName")%>'></asp:Label>
     </ItemTemplate>
    上面这个绑定你也可以这样:Text='<%#Replace(DataBinder.Eval(Container.DataItem,"UserName").ToString(),string,string)%>'
    具体的你可以参考下面的例子。
    http://quickstarts.asp.net/quickstartv20/aspnet/doc/ctrlref/data/formview.aspx

    如果不是直接绑定,你可以用this.FormView1.FindContro("ID")先找到这个label,不过我建议你还是按照例子上的绑定较好。l
    Microsoft Online Community Support
    2009年6月10日 4:58
  • 可以用Replace函数,但是是不是vbCrlf我就不知道了,我用\n\r或者\r\n 具体不记得哪个前哪个后了,反正就这两个替换的。
    低调,低调
    哈哈,书出了,可以点这里购买哦。。
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    2009年6月10日 5:14
    版主
  • <ItemTemplate>
    <asp:Label ID="x" runat="server"><%#(Eval("学生姓名")).ToString().Replace(vbCrLf, "<br/>").Replace(" ", "&nbsp;")%></asp:Label>    
    </ItemTemplate>

    【孟子E章】
    • 已标记为答案 YYing 2009年6月11日 1:57
    2009年6月10日 5:25
    版主
  • 如果使用代码可以这样:
      Protected Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim t As TextBox = CType(FormView1.FindControl("txt"), TextBox)
        Dim ret As String = t.Text
        ret = ret.Replace(" ", "&nbsp;")
        ret = ret.Replace(vbCrLf, "<br/>")
        Label1.Text = ret
      End Sub

    【孟子E章】
    2009年6月10日 5:25
    版主
  • 一个完整的例子,拷贝即可执行

    <%@ Page Language="VB" Debug="true" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
      Private Function CreateDataSourceByXianhuiMeng() As System.Data.DataView
        Dim dt As New System.Data.DataTable()
        Dim dr As System.Data.DataRow
        dt.Columns.Add(New System.Data.DataColumn("id", GetType(System.Int32)))
        dt.Columns.Add(New System.Data.DataColumn("学生姓名", GetType(System.String)))
        dt.Columns.Add(New System.Data.DataColumn("语文", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("数学", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("英语", GetType(System.Decimal)))
        dt.Columns.Add(New System.Data.DataColumn("计算机", GetType(System.Decimal)))
        
        For i As Integer = 0 To 10
          Dim rd As New System.Random(Environment.TickCount * i)
          dr = dt.NewRow()
          dr(0) = i
          dr(1) = "【孟子E章】     " & i.ToString()
          dr(2) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(3) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(4) = System.Math.Round(rd.NextDouble() * 100, 2)
          dr(5) = System.Math.Round(rd.NextDouble() * 100, 2)
          dt.Rows.Add(dr)
        Next
        Dim dv As New System.Data.DataView(dt)
        Return (dv)
      End Function
      
      Protected Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim t As TextBox = CType(FormView1.FindControl("txt"), TextBox)
        Dim ret As String = t.Text
        ret = ret.Replace(" ", "&nbsp;")
        ret = ret.Replace(vbCrLf, "<br/>")
        
        Dim Label1 As Label = CType(FormView1.FindControl("Label1"), Label)
        Label1.Text = ret
      End Sub
    
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not IsPostBack Then
          FormView1.DataSource = Me.CreateDataSourceByXianhuiMeng
          FormView1.DataBind()
        End If
      End Sub
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:FormView ID="FormView1" runat="server" DefaultMode="Edit">
        <EditItemTemplate>
          <div>
            <asp:TextBox ID="txt" runat="server" TextMode="MultiLine" Height="272px" Width="691px"
              Text='<%#Bind("学生姓名") %>'></asp:TextBox>
          </div>
          <div style="background: #eee">
            <asp:Label ID="Label1" runat="server"></asp:Label></div>
          <div>
            <asp:Label ID="Label2" runat="server" Text='<%#(Eval("学生姓名")).ToString().Replace(" ", "&nbsp;").Replace(vbCrLf, "<br/>") %>'></asp:Label></div>
        </EditItemTemplate>
      </asp:FormView>
      <asp:Button Text="提交" ID="b" runat="server" OnClick="b_Click" />
      </form>
    </body>
    </html>
    

    【孟子E章】
    2009年6月10日 5:33
    版主