Управление календарем внутри шаблона редактирования 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 Метод будет работать для получения выбранной даты из элемента управления календаря в элемент управления текстовое поле, но я все еще хочу, чтобы календарь отображался и исчезал, когда пользователь нажимает кнопку изображения.

Любая помощь приветствуется. Благодарю.

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

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

Другие вопросы по тегам