Member 12409011 Ответов: 2

Как отобразить элемент управления календарем в столбце вид сетки в режиме редактирования в ASP.NET с#


У меня есть 2 элемента управления календарем и 1 элемент управления Gridview.когда пользователь выбирает дату из обоих элементов управления, я отображаю данные в gridview между выбранными датами месяцев. Для этого я написал select query. я показываю 3 colums FileName, UploadDate и ProcessedDate на кнопке поиска .
Теперь, что я должен сделать, я хочу, чтобы добавить элемент управления календарь в столбце ProcessedDate для редактирования
GridView1_RowEditing
пожары событий. я могу поместить ручную дату в этот файл и сохранить ее в базе данных, но я хочу отобразить там элемент управления календарем.

это мой код страницы aspx


<asp:GridView ID="GridView1" runat="server"  DataKeyNames="FileName" CellPadding="6" GridLines="None" CssClass="inline"  AutoGenerateEditButton="True" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellSpacing="1" OnRowDataBound="GridView1_RowDataBound">
             <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
             <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
             <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
             <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
             <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
             <SortedAscendingCellStyle BackColor="#F1F1F1" />
             <SortedAscendingHeaderStyle BackColor="#594B9C" />
             <SortedDescendingCellStyle BackColor="#CAC9C9" />
             <SortedDescendingHeaderStyle BackColor="#33276A" />


         </asp:GridView>


Код C#
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
           
            GridViewRow row = GridView1.Rows[e.RowIndex];
               //Calendar textName = (Calendar)row.Cells[0].Controls[0];
            //System.Web.UI.WebControls.Calendar Calendar1 = (System.Web.UI.WebControls.Calendar)row.Cells[0].Controls[0];
            //TextBox ProcessedDate = (TextBox)row.FindControl("txtProductName");
            //int PackageDetailsID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
            string FileName = Convert.ToString(GridView1.DataKeys[e.RowIndex].Values[0]);
            string name = (row.Cells[2].Controls[0] as TextBox).Text;
            //string country = (row.Cells[3].Controls[0] as TextBox).Text;
            string constr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("UPDATE PackageDetails SET ProcessedDate = @ProcessedDate WHERE FileName = @FileName"))
                //using (SqlCommand cmd = new SqlCommand("UPDATE PackageDetails SET ProcessedDate = '" + Calendar1 + "' WHERE FileName ='" + FileName + "'"))

                {

                    cmd.Parameters.AddWithValue("@FileName", FileName);
                    cmd.Parameters.AddWithValue("@ProcessedDate", name);
                   
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
            GridView1.EditIndex = -1;
            //this.BindGrid();
            this.BindDataGrid();

        }

        public void BindDataGrid()
        {

            string constr = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {

                using (SqlCommand cmd = new SqlCommand("SELECT DISTINCT FileName, UploadDate, ProcessedDate FROM PackageDetails WHERE CONVERT(DATE, UploadDate) BETWEEN @From AND @To", con))
                {
                 
                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                    {
                        string date = "";
                        date = CalendarFrom.SelectedDate.ToString("MM-dd-yyyy");
                        string date2 = "";
                        date2 = CalendarTo.SelectedDate.ToString("MM-dd-yyyy");
                        cmd.Parameters.Add("@From", SqlDbType.Date).Value = date;
                        cmd.Parameters.Add("@To", SqlDbType.Date).Value = date2;
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                      
                        GridView1.DataSource = ds;
                        GridView1.DataBind();
                    }
                }
            }

        }

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
       {
           GridView1.EditIndex = e.NewEditIndex;
          //System.Web.UI.WebControls.Calendar Calendar1 = (System.Web.UI.WebControls.Calendar)row.Cells[0].Controls[0];

           //this.BindGrid();
           this.BindDataGrid();
       }


Что я уже пробовал:

я пробовал использовать javascript, но не получил ожидаемого результата.

Karthik_Mahalingam

используйте jQuery date picker, который упрощает работу.

Member 12409011

я новичок в интернете и не знаю, как использовать jquery для достижения этой цели.

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

2 Ответов

Рейтинг:
2
Рейтинг:
1

Graeme_Grant

Поиск в Google - ваш друг. Использование собственного названия вопроса CodeProject: управление календарем в столбце gridview в режиме редактирования в ASP.NET C# - Google[^]

Через 2 секунды нашел это: asp.net -календарь в режиме редактирования gridview-переполнение стека[^]