2012-03-08 6 views
0

У меня есть пользовательский элемент управления дата-сайтом в виде сетки, и одним из свойств является RowID. От Gridview Я передаю Row ID в datebox вПользовательский контроль в виде сетки

<uc2:datePage1 ID="txtSubToSA" RowID=<%# Container.DataItemIndex %> runat="server" Enabled="true" Text= '<%#Eval("SUBMITTED_TO_SA") %>' /> 

в PageLoad в UserControl Я добавляю атрибут для вызова яваскрипта функции:

protected void Page_Load(object sender, EventArgs e) 
    { 

     txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 

    } 
    public int RowID 
     { 
      get; 
      set; 
     } 

Теперь, когда я внести изменения в поле даты gridview, независимо от того, какая строка она всегда дает, принимает значение RowID 0 и не распознает изменения, которые я сделал в других строках. Что я здесь делаю неправильно?

ответ

0

Вы добавляете атрибут onchange в обработчик события Load, перед тем как установить RowId, что будет происходить во время привязки данных. Вы могли бы, возможно, переопределить DataBind и установить атрибут после привязки завершения:

public override void DataBind() 
{ 
    base.DataBind(); 
    txtDate.Attributes.Add(...); 
} 
+0

Вы имеете в виду DataBind пользователя usercontrol или Gridview? Usercontrol - простой текстовый редактор и ajax-контроллер каландрового расширителя. Этот usercontrol используется в различных столбцах gridview. Я хочу запустить событие onchange в строке, в которой изменяется значение элемента управления текстовым полем. – user799891

+0

Я разрешил его, установив атрибут в свойстве, а не в загрузке страницы. Спасибо за совет! Это то, что я сделал, и это сработало. «Code'public INT RowId { установить { txtDate.Attributes.Add ("OnChange", "GetRow (" + значение + ")"); } } – user799891

+0

@ user799891 - Я имел в виду метод DataBind для UserControl - вам нужно быть в UserControl для доступа к txtDate. Но ваше решение добавить атрибут в средство настройки свойств тоже будет работать - возможно, лучшее решение, поскольку оно будет работать, если RowId устанавливается программно, а не использует привязку данных. – Joe

0

Вы могли бы попробовать это вместо этого - Переместить код из

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 
} 

в

protected void Page_LoadComplete(object sender, EventArgs e) 
{ 
    txtDate.Attributes.Add("onchange", "getRow(" + RowID + ")"); 
} 

на странице загрузки полная событие запускается после загрузки данных.