您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



在FormView的模版里,用checkbox控制TextBox的显示
狼子 发表于 2006-9-8 10:54:00 阅读全文 | 回复(0) | 引用通告 | 编辑

我想记录的是时间的控制,如果checkbox选中,TextBox默认显示当前日期,如果checkbox不选中,TextBox默认值是""

如果设置checkbox的postback属性是true,用C#代码在服务器端可以很容易完成

如果这样实现,页面会reload,因为数据要返回到服务器端,所以要在客户端实现

方法:用Attributes从服务器端给客户端添加事件,用elements读取客户端表单里的控件

原因:

1、在服务器端,我不知道客户端的控件名,在客户端,我不可以访问服务器端的控件

2、因为CheckBox和TextBox在FormView的模版里,所以我不可以在aspx页面用aspnetForm.<%= this.服务器端控件ID.ClientID %>访问控件

实现:

1、看这一段,是实现把当前日期转换成yyyy-MM-dd的字符串格式:

<html>
<script type="text/javascript">
var today="";
var d = new Date();
var yy = d.getFullYear();
var mm = d.getMonth() + 1;
var dd = d.getDate();
mm=mm<10?"0"+mm:mm;
dd=dd<10?"0"+dd:dd;
today=yy + "-" + mm + "-" + dd;
document.write(today);
</script>
</html>

2、在asp.net里实现

aspx页面里相关的设置:

<script type="text/javascript" language="javascript">
function iniRemindTime(oInputSrc)
{
    for(var i=0;i<aspnetForm.length;i++)
    {
        if(aspnetForm.elements[i].name==oInputSrc.name)
        {
            ///alert(aspnetForm.elements[i+1].name);
            if(aspnetForm.elements[i+1].type=="text")
            {
             if(oInputSrc.checked)
             {
                    var today="";
                    var d = new Date();
                    var yy = d.getFullYear();
                    var mm = d.getMonth() + 1;
                    var dd = d.getDate();
                    mm=mm<10?"0"+mm:mm;
                    dd=dd<10?"0"+dd:dd;
                    today=yy + "-" + mm + "-" + dd;
                    aspnetForm.elements[i+1].value=today;
                    break;
                }
                else
               {
                aspnetForm.elements[i+1].value="";
               }
            }
        }
    }
}
</script>
<asp:FormView ID="FormView1" runat="server" OnDataBound="FormView1_DataBound">
<InsertItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</InsertItemTemplate>
</asp:FormView>

cs页面里相关设置:

protected void FormView1_DataBound(object sender, EventArgs e)
    {
        CheckBox mycb = new CheckBox();
        mycb = (CheckBox)FormView1.FindControl("CheckBox1");
        if (mycb != null)
        {
            mycb.Attributes.Add("onclick", "iniRemindTime(this)");
        }
}

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.