2014-08-27 87 views
0

我有一个应用程序在我开始工作之前已经开发并且datepickers是自定义的。我们最近迁移到Windows 8和自定义日期选择器不再工作。所以我开始改变它们为jquery-ui datepicker,一切都像我期待的那样。但是现在我面临一个问题。这些自定义日期选择器中的一些处于Telerik RadGrid的编辑/插入模式。当文本框使用控件的id接收一些java脚本的焦点时,弹出jquery-ui datepicker。我没有问题,使新控件以编辑/插入模式出现在其中的正确值。我的问题是,我无法找到控件的RadGrid的编辑/插入模式的ID以在控件获得焦点时弹出日期选择器。任何帮助将不胜感激。如何:在Telerik RadGrid的插入/编辑模式下查找控件ID

回答

0

请试试下面的代码片段。

ASPX

<head runat="server"> 
    <title></title> 
    <telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server" /> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
     </telerik:RadScriptManager> 
     <script type="text/javascript"> 
      function TextBoxFocus(obj) { 
       alert(obj.id); 
       //Access client ID here 
      } 
      function RadTextBoxFocus(sender, args) { 
       alert(sender.get_id()); 
       //Access client ID here 
      } 
     </script> 
     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> 
     </telerik:RadAjaxManager> 
     <div> 
      <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemDataBound="RadGrid1_ItemDataBound"> 
       <MasterTableView> 
        <Columns> 
         <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="ID"></telerik:GridBoundColumn> 
         <telerik:GridTemplateColumn UniqueName="Name" DataField="Name"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label> 
          </ItemTemplate> 
          <EditItemTemplate> 
           <telerik:RadTextBox ID="TextBox1" runat="server" Text='<%# Eval("Name") %>'> 
            <ClientEvents OnFocus="RadTextBoxFocus" /> 
           </telerik:RadTextBox> 
          </EditItemTemplate> 
         </telerik:GridTemplateColumn> 
         <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> 
        </Columns> 
       </MasterTableView> 
      </telerik:RadGrid> 
     </div> 
    </form> 
</body> 
</html> 

ASPX.CS

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("ID", typeof(int)); 
    dt.Columns.Add("Name", typeof(string)); 
    dt.Rows.Add(1, "Name1"); 
    dt.Rows.Add(2, "Name2"); 
    dt.Rows.Add(3, "Name3"); 
    RadGrid1.DataSource = dt; 
} 

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridEditableItem && e.Item.IsInEditMode) 
    { 
     GridEditableItem item = e.Item as GridEditableItem; 
     TextBox TextBox1 = item["ID"].Controls[0] as TextBox; 
     TextBox1.Attributes.Add("onfocus", "TextBoxFocus(this);"); 
    } 
} 

让我知道如果任何问题。

0

我设法访问控件,我不知道我是否做了非常糟糕的事情,因为它非常简单。

ASPX

<asp:TextBox ID="BoxILookFor" runat="server" Text='<%# Eval("myValue") %>' /> 

ASPX.CS

protected void myGrid_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if ((e.Item is GridEditableItem) && (e.Item.IsInEditMode)) 
    { 
     GridEditableItem myItem = (GridEditableItem)e.Item;  
     TextBox myBox = (TextBox)myItem.FindControl("BoxILookFor"); 
     string myID = myBox.ClientID.ToString(); 
     myGrid.Controls.Add(new LiteralControl("<script type='text/javascript'>$('#" + myID + "').datepicker();</script>")); 
    } 
} 

但现在我面对的另一个问题是,我的文本框(日期选择器)节省了一个空字符串没有马瑟我选择什么值(什么时间)。

相关问题