1

我的问题似乎有点难以理解,但很简单,我相信解决方案也很简单。

我有一个可以编辑和更新的 Gridview。我们都知道,当我们单击编辑时,如果列设置为 ReadOnly = "True",则会出现一个默认的 Textbox 控件...

我可以通过单击Gridview的编辑按钮从动态创建的文本框返回值,这一切都很好......

我的问题是:我想将javascript代码添加到在gridview中单击编辑按钮时创建的动态文本框中。

这是单击文本框时 Datepicker 显示的 javascript 代码:

<head runat="server">

<link rel="Stylesheet" type="text/css" href="css/jquery.datepick.css" />
<script type="text/javascript" src="js/jquery.datepick.js"></script>

<script type="text/javascript" language="javascript">
    $(function () {    
        $('#Textbox_Name').datepick({ dateFormat: 'dd/mm/yyyy' });            
    });
</script>
</head>

现在,而不是首先将文本框名称放在该代码上,我想知道动态创建的 gridview 编辑文本框的名称,然后在该文本框上显示日期选择器

4

3 回答 3

1

处理 RowCreated 事件:

protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowState == DataControlRowState.Edit)
    {
        var textBox = e.Row.FindControl("myTextBox") as TextBox;
        ClientScript.RegisterStartupScript(this.GetType(), "datepick", 
        "$(function () { $('#" + textBox.ClientID + "').datepick({ dateFormat: 'dd/mm/yyyy' });  })", true);
    }
}
于 2012-07-19T11:31:01.027 回答
1

这里的简单方法是将 css 类名称添加到您的编辑器,然后将 datepick 应用于所有具有此类的编辑器

<script type="text/javascript" language="javascript">
    $(function () {
        $('.className').datepick({ dateFormat: 'dd/mm/yyyy' });
    });
</script>

另请参阅此问题,该问题有解决方案,包括更新面板:Asp.Net UpdatePanel in Gridview Jquery DatePicker

于 2012-07-19T11:34:50.413 回答
0

我让我的工作是这样的:

(RowDataBound 事件)

if (e.Row.RowType == DataControlRowType.DataRow)
{
   TextBox tbOne = e.Row.FindControl("txtMyTextBox") as TextBox;
   if (tbOne != null)
   {
       string js = "$(function() { $('#" + tbOne.ClientID + "').datepicker();  });";
       ClientScript.RegisterStartupScript(this.GetType(), "DatePickJS_" + Guid.NewGuid().ToString("N"), js, true);
   }
}
于 2013-03-22T21:29:11.413 回答