Как редактировать элемент управления календаря в виде сетки? - PullRequest
0 голосов
/ 21 мая 2019

Я пытался обновить данные в режиме редактирования gridview.

Неправильно отправляется с моим действительным кодом. Я попытался сделать это templateField в HTML, и он не работает. В этот момент программа обрывается, когда я изменяю дату в режиме редактирования gridview. Это помещается в Page_Load. При условии сортировки сетки сетка является обязательной.

     if (ViewState["sorting"] == null)
    {

        String myquery = "Select * from Venituri";
        SqlConnection sqlCon = new SqlConnection(CS);
        SqlCommand cmd = new SqlCommand
        {
            CommandText = myquery,
            Connection = sqlCon
        };
        SqlDataAdapter da = new SqlDataAdapter
        {
            SelectCommand = cmd
        };
        DataSet ds = new DataSet();
        da.Fill(ds);
        GridViewIncomes.DataSource = ds;
        GridViewIncomes.DataSourceID = String.Empty;
        GridViewIncomes.DataBind(); //here is a break when I was modified with the suggest code
    }




protected void GridViewIncomes_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    SqlConnection sqlCon = new SqlConnection(CS);
    int index = GridViewIncomes.EditIndex;
    GridViewRow row = GridViewIncomes.Rows[index];
    int VenitId = Convert.ToInt32(GridViewIncomes.DataKeys[e.RowIndex].Value);
    string Denumire = ((TextBox)row.Cells[2].Controls[0]).Text.ToString().Trim();
    var MyDateInsCalendar = GridViewIncomes.Rows[GridViewIncomes.EditIndex].FindControl("Data") as Calendar;
    MyDateInsCalendar.Visible = false;
    string Suma = ((TextBox)row.Cells[4].Controls[0]).Text.ToString().Trim();
    string Descriere = ((TextBox)row.Cells[5].Controls[0]).Text.ToString().Trim();
    string sql = "UPDATE Venituri SET Denumire='" + Denumire + "',Data='" + MyDateInsCalendar + "',Suma='" + Suma + "',Descriere='" + Descriere + "' WHERE VenitId=" + VenitId + "";

    SqlCommand cmd = new SqlCommand(sql, sqlCon);
    sqlCon.Open();
    int temp = cmd.ExecuteNonQuery();
    sqlCon.Close();
    if (temp == 1)
    {

        lblSuccessMessage.Text = "Actualizat cu succes!";
    }
    GridViewIncomes.EditIndex = -1;
    lblSuccessMessage.Text = "";

}

`

.aspx <asp:BoundField HeaderText="Data" SortExpression="Data" DataField="Data" />

Для редактирования даты в сетке и обновления в базе данных.

1 Ответ

0 голосов
/ 21 мая 2019

Ваша переменная MyDateInsCalendar является объектом (Календарь). Используйте одно из свойств этой переменной в своем выражении SQL.

например:

<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing" AutoGenerateColumns="false" OnRowUpdating="GridView1_RowUpdating">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>                
            </ItemTemplate>
            <EditItemTemplate>
                <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGrid();
    }
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindGrid();
}

private void BindGrid()
{
    List<string> tmp = new List<string>();
    tmp.Add("a");
    GridView1.DataSource = tmp;
    GridView1.DataBind();
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    Calendar cal = GridView1.Rows[e.RowIndex].FindControl("Calendar1") as Calendar;
    string tmp = cal.SelectedDate.ToString();
    BindGrid();
}
...