如何为每个gridview行中的每个控件设置不同的id

蓝河

我有一个GridView带有手动定义的列。我有几行(我使用一个按钮添加一行)。我的问题是,同一列中的所有控件都具有相同的ID,因此我无法在“日期”列(称为Fecha)中使用JQuery Datepicker。

我相信我可以使用txtFecha1,txtFecha2等控件ID来添加行按钮来工作(保留旧数据)。但是我应该在哪里设置这些名称?

我应该提一下,我也会想办法让JQuery datepicker在具有相同id的控件上工作,但是许多答案都认为它不起作用,因为datepicker假设我是一个很好的程序员,并且我设置了另一个id对于每个控件。

GridView的代码:

        <asp:GridView CssClass="table table-striped table-bordered table-condensed"
        ID="gvActividades" runat="server" EmptyDataText="Error" AllowPaging="False"
        AutoGenerateColumns="false" OnRowDataBound="gvActividades_OnRowDataBound"
        OnRowDeleting="gvActividades_RowDeleting">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" />
            <asp:TemplateField runat="server" HeaderText="Técnico">
                <ItemTemplate>
                    <asp:DropDownList runat="server" ClientIDMode="Static" class="form-control" ID="cboTecnico">
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Fecha">
                <ItemTemplate>
                    <asp:TextBox runat="server" ClientIDMode="Static" class="form-control datepicker" ID="txtFecha" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Hora de inicio">
                <ItemTemplate>
                    <asp:TextBox runat="server" ClientIDMode="Static" class="form-control" ID="txtHoraInicio" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Hora de fin">
                <ItemTemplate>
                    <asp:TextBox runat="server" ClientIDMode="Static" class="form-control" ID="txtHoraFin" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Repuesto">
                <ItemTemplate>
                    <asp:DropDownList runat="server" ClientIDMode="Static" class="form-control" ID="cboRepuesto">
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Cantidad">
                <ItemTemplate>
                    <asp:TextBox runat="server" ClientIDMode="Static" class="form-control" ID="txtCantidad" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField runat="server" HeaderText="Descripción">
                <ItemTemplate>
                    <asp:TextBox runat="server" ClientIDMode="Static" class="form-control" ID="txtDescripcion" />
                </ItemTemplate>
            </asp:TemplateField>

        </Columns>
        <SelectedRowStyle CssClass="gvSelectedRowStyle" />
        <PagerStyle CssClass="gvPagerStyle" />
    </asp:GridView>

添加行按钮的代码(按下按钮时调用的方法):

    protected void cmdAgregarFila_Click(object sender, EventArgs e)
{
    if (null == ViewState["CurrentTable"])
    {
        return;
    }
    int rowIndex = 0;

    DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
    DataRow drCurrentRow = null;
    if (dtCurrentTable.Rows.Count > 0)
    {
        for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
        {
            DropDownList cboTecnico =
             (DropDownList)gvActividades.Rows[rowIndex].Cells[1].FindControl("cboTecnico");
            TextBox txtFecha =
              (TextBox)gvActividades.Rows[rowIndex].Cells[2].FindControl("txtFecha");
            TextBox txtHoraInicio =
              (TextBox)gvActividades.Rows[rowIndex].Cells[3].FindControl("txtHoraInicio");
            TextBox txtHoraFin =
              (TextBox)gvActividades.Rows[rowIndex].Cells[4].FindControl("txtHoraFin");
            DropDownList cboRepuesto =
          (DropDownList)gvActividades.Rows[rowIndex].Cells[5].FindControl("cboRepuesto");
            TextBox txtCantidad =
              (TextBox)gvActividades.Rows[rowIndex].Cells[6].FindControl("txtCantidad");
            TextBox txtDescripcion =
              (TextBox)gvActividades.Rows[rowIndex].Cells[7].FindControl("txtDescripcion");
            drCurrentRow = dtCurrentTable.NewRow();
            drCurrentRow["RowNumber"] = i + 1;

            dtCurrentTable.Rows[i - 1]["Col1"] = cboTecnico.SelectedValue;
            dtCurrentTable.Rows[i - 1]["Col2"] = txtFecha.Text;
            dtCurrentTable.Rows[i - 1]["Col3"] = txtHoraInicio.Text;
            dtCurrentTable.Rows[i - 1]["Col4"] = txtHoraFin.Text;
            dtCurrentTable.Rows[i - 1]["Col5"] = cboRepuesto.SelectedValue;
            dtCurrentTable.Rows[i - 1]["Col6"] = txtCantidad.Text;
            dtCurrentTable.Rows[i - 1]["Col7"] = txtDescripcion.Text;
            rowIndex++;
        }
        dtCurrentTable.Rows.Add(drCurrentRow);
        ViewState["CurrentTable"] = dtCurrentTable;

        gvActividades.DataSource = dtCurrentTable;
        gvActividades.DataBind();
    }

    SetPreviousData();
}

行添加的其他方法:

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
        FirstGridViewRow();
    }
}

private void FirstGridViewRow()
{
    DataTable dt = new DataTable();
    DataRow dr = null;
    dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
    dt.Columns.Add(new DataColumn("Col1", typeof(string)));
    dt.Columns.Add(new DataColumn("Col2", typeof(string)));
    dt.Columns.Add(new DataColumn("Col3", typeof(string)));
    dt.Columns.Add(new DataColumn("Col4", typeof(string)));
    dt.Columns.Add(new DataColumn("Col5", typeof(string)));
    dt.Columns.Add(new DataColumn("Col6", typeof(string)));
    dt.Columns.Add(new DataColumn("Col7", typeof(string)));
    dr = dt.NewRow();
    dr["RowNumber"] = 1;
    dr["Col1"] = string.Empty;
    dr["Col2"] = string.Empty;
    dr["Col3"] = string.Empty;
    dr["Col4"] = string.Empty;
    dr["Col5"] = string.Empty;
    dr["Col6"] = string.Empty;
    dr["Col7"] = string.Empty;
    dt.Rows.Add(dr);

    ViewState["CurrentTable"] = dt;

    gvActividades.DataSource = dt;
    gvActividades.DataBind();
}

private void SetPreviousData()
{
    int rowIndex = 0;
    if (ViewState["CurrentTable"] != null)
    {
        DataTable dt = (DataTable)ViewState["CurrentTable"];
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DropDownList cboTecnico =
              (DropDownList)gvActividades.Rows[rowIndex].Cells[1].FindControl("cboTecnico");
                TextBox txtFecha =
                  (TextBox)gvActividades.Rows[rowIndex].Cells[2].FindControl("txtFecha");
                TextBox txtHoraInicio =
                  (TextBox)gvActividades.Rows[rowIndex].Cells[3].FindControl("txtHoraInicio");
                TextBox txtHoraFin =
                  (TextBox)gvActividades.Rows[rowIndex].Cells[4].FindControl("txtHoraFin");
                DropDownList cboRepuesto =
              (DropDownList)gvActividades.Rows[rowIndex].Cells[5].FindControl("cboRepuesto");
                TextBox txtCantidad =
                  (TextBox)gvActividades.Rows[rowIndex].Cells[6].FindControl("txtCantidad");
                TextBox txtDescripcion =
                  (TextBox)gvActividades.Rows[rowIndex].Cells[7].FindControl("txtDescripcion");

                cboTecnico.SelectedValue = dt.Rows[i]["Col1"].ToString();
                txtFecha.Text = dt.Rows[i]["Col2"].ToString();
                txtHoraInicio.Text = dt.Rows[i]["Col3"].ToString();
                txtHoraFin.Text = dt.Rows[i]["Col4"].ToString();
                cboRepuesto.SelectedValue = dt.Rows[i]["Col5"].ToString();
                txtCantidad.Text = dt.Rows[i]["Col6"].ToString();
                txtDescripcion.Text = dt.Rows[i]["Col7"].ToString();
                rowIndex++;
            }
        }
    }
}

protected void gvActividades_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    SetRowData();
    if (ViewState["CurrentTable"] != null)
    {
        DataTable dt = (DataTable)ViewState["CurrentTable"];
        DataRow drCurrentRow = null;
        int rowIndex = Convert.ToInt32(e.RowIndex);
        if (dt.Rows.Count > 1)
        {
            dt.Rows.Remove(dt.Rows[rowIndex]);
            drCurrentRow = dt.NewRow();
            ViewState["CurrentTable"] = dt;
            gvActividades.DataSource = dt;
            gvActividades.DataBind();

            SetPreviousData();
            //actualizarTotal();
        }
    }
}

private void SetRowData()
{
    int rowIndex = 0;

    if (null == ViewState["CurrentTable"])
    {
        return;
    }
    DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
    DataRow drCurrentRow = null;
    if (dtCurrentTable.Rows.Count > 0)
    {
        for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
        {
            DropDownList cboTecnico =
              (DropDownList)gvActividades.Rows[rowIndex].Cells[1].FindControl("cboTecnico");
            TextBox txtFecha =
              (TextBox)gvActividades.Rows[rowIndex].Cells[2].FindControl("txtFecha");
            TextBox txtHoraInicio =
              (TextBox)gvActividades.Rows[rowIndex].Cells[3].FindControl("txtHoraInicio");
            TextBox txtHoraFin =
              (TextBox)gvActividades.Rows[rowIndex].Cells[4].FindControl("txtHoraFin");
            DropDownList cboRepuesto =
          (DropDownList)gvActividades.Rows[rowIndex].Cells[5].FindControl("cboRepuesto");
            TextBox txtCantidad =
              (TextBox)gvActividades.Rows[rowIndex].Cells[6].FindControl("txtCantidad");
            TextBox txtDescripcion =
              (TextBox)gvActividades.Rows[rowIndex].Cells[7].FindControl("txtDescripcion");

            drCurrentRow = dtCurrentTable.NewRow();
            drCurrentRow["RowNumber"] = i + 1;
            dtCurrentTable.Rows[i - 1]["Col1"] = cboTecnico.SelectedValue;
            dtCurrentTable.Rows[i - 1]["Col2"] = txtFecha.Text;
            dtCurrentTable.Rows[i - 1]["Col3"] = txtHoraInicio.Text;
            dtCurrentTable.Rows[i - 1]["Col4"] = txtHoraFin.Text;
            dtCurrentTable.Rows[i - 1]["Col5"] = cboRepuesto.SelectedValue;
            dtCurrentTable.Rows[i - 1]["Col6"] = txtCantidad.Text;
            dtCurrentTable.Rows[i - 1]["Col7"] = txtDescripcion.Text;
            rowIndex++;
        }

        ViewState["CurrentTable"] = dtCurrentTable;
    }

    SetPreviousData();
}
say

在项目模板内部使用ClientIDMode="Predictable"而不是ClientIDMode="Static"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为表单中的每个WebBrowser控件设置不同的代理-所有可能的方式

来自分类Dev

如何为Azure中的每个分支设置不同的管道

来自分类Dev

如何为每个元素分配不同的ID

来自分类Dev

如何为每个膨胀的EditText设置ID?

来自分类Dev

如何为每个膨胀的EditText设置ID?

来自分类Dev

如何为RadioButtonList的每个重复列设置不同的背景颜色

来自分类Dev

Swift-如何为每个视图设置不同的导航栏?

来自分类Dev

如何为类的每个实例设置不同的间隔值

来自分类Dev

如何为每个联系人设置不同的铃声模式

来自分类Dev

模态窗口:如何为每个模态设置不同的内容?

来自分类Dev

Swift-如何为每个视图设置不同的导航栏?

来自分类Dev

如何为流程图的每个条形设置不同的渐变?

来自分类Dev

如何为weebly中的每个页面设置不同的主要内容背景?

来自分类Dev

如何为列中的每个不同元素仅选择两行(PostgreSQL 9.3.5)

来自分类Dev

如何为领域android中的每个插入和更新行设置当前时间戳

来自分类Dev

如何为熊猫列中的每个列表附加不同的元素?

来自分类Dev

如何为 DOM 中的每个元素添加不同的文本

来自分类Dev

如何为每个ID选择第n行?

来自分类Dev

如何为每个唯一ID选择一行

来自分类Dev

如何为詹金斯中的每个项目设置凭证?

来自分类Dev

如何为div中的每个元素设置随机边框颜色

来自分类Dev

如何为Cosmos db中的每个文档设置字段?

来自分类Dev

如何为 OkHttp 中的每个请求设置代理?

来自分类Dev

在 Microsoft SQL 中,如何为每个 ID 仅返回 1 行并带有多列结果

来自分类Dev

如何为R中的每个ID分配日期序列

来自分类Dev

如何为列表中的每个项目添加特殊ID

来自分类Dev

如何为 Hive 中的每个 disticnt id 选择最新记录?

来自分类Dev

如何为jooq中的每个查询添加动态ID

来自分类Dev

如何为每个 ID 获取地图函数中的项目

Related 相关文章

  1. 1

    如何为表单中的每个WebBrowser控件设置不同的代理-所有可能的方式

  2. 2

    如何为Azure中的每个分支设置不同的管道

  3. 3

    如何为每个元素分配不同的ID

  4. 4

    如何为每个膨胀的EditText设置ID?

  5. 5

    如何为每个膨胀的EditText设置ID?

  6. 6

    如何为RadioButtonList的每个重复列设置不同的背景颜色

  7. 7

    Swift-如何为每个视图设置不同的导航栏?

  8. 8

    如何为类的每个实例设置不同的间隔值

  9. 9

    如何为每个联系人设置不同的铃声模式

  10. 10

    模态窗口:如何为每个模态设置不同的内容?

  11. 11

    Swift-如何为每个视图设置不同的导航栏?

  12. 12

    如何为流程图的每个条形设置不同的渐变?

  13. 13

    如何为weebly中的每个页面设置不同的主要内容背景?

  14. 14

    如何为列中的每个不同元素仅选择两行(PostgreSQL 9.3.5)

  15. 15

    如何为领域android中的每个插入和更新行设置当前时间戳

  16. 16

    如何为熊猫列中的每个列表附加不同的元素?

  17. 17

    如何为 DOM 中的每个元素添加不同的文本

  18. 18

    如何为每个ID选择第n行?

  19. 19

    如何为每个唯一ID选择一行

  20. 20

    如何为詹金斯中的每个项目设置凭证?

  21. 21

    如何为div中的每个元素设置随机边框颜色

  22. 22

    如何为Cosmos db中的每个文档设置字段?

  23. 23

    如何为 OkHttp 中的每个请求设置代理?

  24. 24

    在 Microsoft SQL 中,如何为每个 ID 仅返回 1 行并带有多列结果

  25. 25

    如何为R中的每个ID分配日期序列

  26. 26

    如何为列表中的每个项目添加特殊ID

  27. 27

    如何为 Hive 中的每个 disticnt id 选择最新记录?

  28. 28

    如何为jooq中的每个查询添加动态ID

  29. 29

    如何为每个 ID 获取地图函数中的项目

热门标签

归档