在4-3中,我们动态的添加了文本框,修改了文本框的内容,在刷新页面时,文本框没有消失,内容也没有被更改;

readAllLine时,每次载入页面都需要LoadFile,在 LoadFile的过程当中,其实就是动态创建文本框的过程(要注意,动态文本框的创建要放在PageLoad事件中,否则点击其他控件刷新页面后,动态文本框会消失),其他操作就是保存;

文本阅读编辑(保存文本)


进入readAllLine文件中:

文本阅读编辑(保存文本)

因为要动态地创建文本框,所以首先定义个容器:

注意在readAllLine的子页中定义的


容器和按钮的位置:

文本阅读编辑(保存文本)

进入readAllLine.aspx.cs中进行后台代码的定义,不要忘记添加名称空间:

文本阅读编辑(保存文本)

在PageLoad事件中载入指定文件的内容:

自定义一个getPath()函数,来获取有效路径:

文本阅读编辑(保存文本)

如果,getPath()函数返回了一个地址,说明,页面跳转时有参数,并且文件存在,否则被踢回default;

在PageLoad中构建动态文本框组:

文本阅读编辑(保存文本)

将创建的动态文本框添加到txts_holder当中,修改一下代码:

文本阅读编辑(保存文本)

文本阅读编辑(保存文本)

运行效果:

文本阅读编辑(保存文本)

接下来实现文本框换行:

使用Css来控制;

readAllLine.aspx的Css代码可以写在readAllLine子页的Content中,也可以写在母版页head中:

我们现在写在Content中:

我们要控制的是txts_holder层下的input元素:

注意:以盒模型的方式控制文本框,可以实现文本框的换行;

文本阅读编辑(保存文本)

预览效果:

文本阅读编辑(保存文本)

发现控制不到;


原因:

要学会通过查看源文件来检错

我们来查看源文件:

文本阅读编辑(保存文本)

我们是想修改holder_main层下的文本框,但是我们发现现在的div的id被改成了holder_main_txts_holder,发生这种改变的原因是我们套用了母版页,在Asp.net当中为了避免在母版页下面的元素的id跟母版页中元素的id发生冲突,在使用占位符的过程中,会改变元素的id,将占位符的id前置到元素的id中,从而无法保证Css当中元素id的正确性,该问题无法解决,因此Css代码通常使用class来控制这些元素,因为class是不会被改变的;

在asp.net4.0之后,该问题有了解决方案:

文本阅读编辑(保存文本)

在将要通过Css进行控制的元素中,添加clientidmode属性,并且设置为Static,并且确保这个id与别的id不能发生冲突;


刷新页面:

文本阅读编辑(保存文本)

此时,点击保存修改按钮,文本框不会消失,修改的内容也被保留在文本框当中,这与4-3中动态添加文本框的效果是一样的;


接下来编辑保存文本按钮:

将文本框中的内容保存到文件中;

首先,遍历层下的所有控件,如果是文本框,则把文本框中的内容添加:

因为,会存在一些看不见的控件,而且会被遍历出来,因此要对控件进行检测:

如何做到保存后不改变文本换行的格式:

首先,将每行内容拼接起来,在通过split拆开,并分配到数组之中,在使用writeAllLine方法,将数组内容写入文件中;

文本阅读编辑(保存文本)

长度减一是为了将最后一个字符串后的"\u0081"去掉,否则,在文本文件中,最后一行会多出一个空字符串;




相关文章:

  • 2021-08-21
  • 2021-12-03
  • 2021-11-05
  • 2021-06-03
猜你喜欢
  • 2022-12-23
  • 2021-11-21
  • 2021-06-27
  • 2021-06-17
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
相关资源
相似解决方案