2014-08-27 3 views
0

У меня есть приложение, которое было разработано до того, как я начал работать, и пользователи datepickers являются обычными. мы недавно перешли на Windows 8, и пользовательские датпикеры больше не работают. Поэтому я начал менять их для jquery-ui datepicker, и все происходило так, как я ожидал. Но теперь я сталкиваюсь с проблемой. некоторые из этих пользовательских датпикеров находятся в режиме редактирования/вставки Telerik RadGrid. Мой jquery-ui datepicker появляется, когда текстовое поле получает фокус с некоторым java-скриптом, используя идентификатор элемента управления. У меня нет проблем с тем, чтобы новый элемент управления отображался в режиме редактирования/вставки с нужным значением в нем. Моя проблема заключается в том, что я не могу найти идентификатор элемента управления в режиме редактирования/вставки RadGrid для всплытия datepicker, когда управление получает фокус. Любая помощь будет принята с благодарностью.Практическое руководство. Поиск идентификатора элемента управления в режиме вставки/редактирования Telerik RadGrid

ответ

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>")); 
    } 
} 

Но теперь я столкнуться с другой проблемой, мое текстовое поле (DatePicker) не сохраняет пустую строку не Mather, какое значение (какую дату) я выбираю.

Смежные вопросы