управление календарем внутри шаблона edititem gridview

Я могу получить доступ к элементу управления календарем внутри шаблона нижнего колонтитула Gridview. Но не так просто сделать то же самое в шаблоне EditItem.

Кто-нибудь может подсказать, как это сделать?

Я использую 3 элемента управления в шаблоне EditItem: Calendar, ImageButton, TextBox, а также шаблон нижнего колонтитула.

Вы можете использовать метод FindControl в FooterRow GridView, чтобы сделать календарь видимым True/False

protected void MyDateInsButton_Click(object sender, EventArgs e)
{
    if (GridView1.FooterRow.FindControl("MyDateInsCalendar").Visible == false)
    {
        GridView1.FooterRow.FindControl("MyDateInsCalendar").Visible = true;
    }
    else
    {
        GridView1.FooterRow.FindControl("MyDateInsCalendar").Visible = false;
    }
}

И получить выбранную дату внутри нижнего колонтитула TextBox

protected void MyDateInsCalendar_SelectionChanged(object sender, EventArgs e)
{        
    Calendar MyCal = (Calendar)sender;

    ((TextBox)GridView1.FooterRow.FindControl("txtinsMyDate")).Text = MyCal.SelectedDate.ToString("d");
    GridView1.FooterRow.FindControl("MyDateInsCalendar").Visible = false;       
}

Как вы получаете доступ к элементу управления календарем в шаблоне EditItem, чтобы сделать его видимым True и False?

protected void MyUpdButton_Click(object sender, EventArgs e)
{

}

Метод GridView1_RowUpdating будет работать для получения выбранной даты из элемента управления календарем в элемент управления текстовым полем, но я все еще хочу, чтобы календарь появлялся и исчезал, когда пользователь нажимает кнопку изображения.

Любая помощь приветствуется. Спасибо.


person user2912964    schedule 23.10.2013    source источник


Ответы (1)


Вы почти там. Делайте так:

protected void MyUpdButton_Click(object sender, EventArgs e)
{
    var MyDateInsCalendar = GridView1.Rows[GridView1.EditIndex].FindControl("MyDateInsCalendar") as Calendar;
    MyDateInsCalendar.Visible = false;
}

И в GridView1_RowEditing установите EditIndex, перепривяжите данные:

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
      GridView1.EditIndex = e.NewEditIndex;
      GridView1.DataSource = MyDataSource; //Set it to your datasource
      GridView1.DataBind();    
 }

Надеюсь, поможет!

person afzalulh    schedule 24.10.2013
comment
У меня следующий вопрос. Как заставить свойство VisibleDate работать? - person user2912964; 25.10.2013
comment
Вот хороший пример в MSDN Calendar. Свойство VisibleDate. - person afzalulh; 25.10.2013