开发了半个月的后台一部分功能,我已身心俱疲,不过实在太有收货了,完成之后,赶紧做个总结。
1.首先是发布咨询模块。
总结如下:
1.咨询类型的选择:其实就是下拉框。但是怎样读取后台数据呢,分解一下:
<asp:DropDownList ID="newsType_Id" runat="server" CssClass="txtCss"></asp:DropDownList>
这是服务器控件,不用我说了,那好后台绑定数据:
public void InitDrop() //资讯类型
{
newsType_Id.DataSource = sqlhelper.publicFun("select * from tb_NewsType where newsType_Name!='展会资讯'");
newsType_Id.DataTextField = "newsType_Name";
newsType_Id.DataValueField = "newsType_Id";
newsType_Id.DataBind();
}
最不能忘的当让是加载:
if (!IsPostBack)
{
InitDrop();
}
2.输入标题:这真是好难啊。
<li><span>标题:</span><asp:TextBox ID="news_Title" runat="server" CssClass="txtCss" onkeyup="shu(this);"></asp:TextBox><font><%=news_Title.Text.Length %>/30</font></li>
这里有个思路:数字,字母,英文标点,符号,占1个字节,中文占两个字节。
所以要动态更新输出的字数,要算的是字节数,而不是长度。
function cutStr(str, L) {
var result = '',
strlen = str.length, // 字符串长度
chrlen = str.replace(/[^x00-xff]/g, '**').length; // 字节长度
if (chrlen <= L) { return str; }
for (var i = 0, j = 0; i < strlen; i++) {
var chr = str.charAt(i);
if (/[x00-xff]/.test(chr)) {
j++; // ascii码为0-255,一个字符就是一个字节的长度
} else {
j += 2; // ascii码为0-255以外,一个字符就是两个字节的长度
}
if (j <= L) { // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后
result += chr;
} else { // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回
return result;
}
}
}
//数量
function shu(obj) {
var zs = 30; //字数限制为30
var val = $(obj).val(); //文本框输入的值
var bytesCount = 0; //字节数为0
for (var i = 0; i < val.length; i++) {
var c = val.charAt(i);
if (/^[u0000-u00ff]$/.test(c)) //匹配双字节
{
bytesCount += 1;
}
else {
bytesCount += 2;
}
}
var len = 0;
if (bytesCount > zs * 2) {
$(obj).val(cutStr(val, zs * 2));
len = zs;
}
else {
len = Math.ceil(bytesCount / 2);
}
$(obj).next().html(len + "/" + zs); //下一个标签,如果是上一个标签则是prev
}
这真是一个复杂的过程呀。
3.输入关键字:
<li><span>关键字:</span><asp:TextBox ID="news_KeyWord" runat="server" onkeyup="key(this)" CssClass="txtCss"></asp:TextBox><font><%=news_KeyWord.Text.Length %>/30 多个关键字用“,”隔开!</font></li>
也需要加字数限制,同上。
4.上传图片,我单独有一节将说上传图片。
5.
<li style="margin: 10px 0 6px 0;"><span>显示:</span><asp:RadioButton ID="rdoxsyes" runat="server" GroupName="rdoxs" Text="图片在详细页显示" value="True" Checked /><asp:RadioButton ID="rdoxxno" runat="server" value="False" Text="图片不在详细页显示" GroupName="rdoxs" /></li>
<li style="margin: 10px 0 6px 0;"><span>置顶:</span><asp:RadioButton ID="rdozdyes" runat="server" GroupName="rdozd" Text="置于页面顶部" value="True" Checked /><asp:RadioButton ID="rdozdno" runat="server" value="False" Text="不置于页面顶部" GroupName="rdozd" /></li>
<li style="margin: 10px 0 6px 0;"><span>推荐:</span><asp:RadioButton ID="rdotjyes" runat="server" GroupName="rdotj" Text="作为推荐内容" value="True" Checked /><asp:RadioButton ID="rdotjno" runat="server" value="False" Text="不作为推荐内容" GroupName="rdotj" /></li>
置顶,推荐,显示,这里有个贴士:连个单选框name要一致,也就是GroupName,那么服务器控件,怎样获取他的value值呢。同html一样。
$("input[name='rdox']:checked").val();
获取被选中的值,还有就是raido中value中写好,true和false。
alert()一下看对不对。
6.按钮:其实这个页面共有6个按钮,通过后台的判断,隐藏4个按钮,这里只有发布和保存草稿。