回发递增发行中Dropdownlist的ID

时间:2019-05-31 23:41:25

标签: c# asp.net

在PostBack中为GridView设置下拉列表选择的值时,ID会错误地递增。

我有一个GridView,当页面加载时,它从数据库中提取数据并填充GridView。如果我保存GridView并运行PostBack,则DropdownList的ID将错误地递增。也就是说,当页面加载时,Dropdowlist的ID为:

DataTables_Table_0_Drop0_0
DataTables_Table_0_Drop0_1

,但回发后ID更改为:

DataTables_Table_0_Drop0_0
DataTables_Table_0_Drop1_1

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                MySqlConnection connection = new MySqlConnection(Global.conn);
                connection.Open();
                MySqlCommand command = connection.CreateCommand();
                string sql = "select bankstatements.bankstatementid as bankstatementid, bankstatements.note as note, bankstatements.PortfolioId as PortfolioId, uniquePortfolioName, bankstatements.bankstatementdate as Date, bankstatements.referencenumber as 'Reference Number', " +
                        " bankstatements.heading as Title, bankstatements.description as Description, " +
                        " bankstatements.code as Code, bankstatements.bundle as Bundle," +
                        " bankstatements.deposit as Deposit, bankstatements.withdrawal as Withdrawal,  " +
                        " bankstatements.total as 'Running Total', Concat(type_currency.currency,'-',type_currency.country) as Currency,  " +
                        " type_bank.bankname as Bank " +
                        " from bankstatements_temp " +
                        " inner join bankstatements " +
                        " on bankstatements.referencenumber = bankstatements_temp.referencenumber " +
                        " and bankstatements.bankstatementdate = bankstatements_temp.bankstatementdate " +
                        " and bankstatements.currency = bankstatements_temp.currency " +
                        " and bankstatements.Bank = bankstatements_temp.Bank " +
                        " inner join type_bank on bankstatements_temp.bank=type_bank.bankid " +
                        " left join portfolio on bankstatements.PortfolioId=portfolio.portfolioid " +
                        " inner join type_currency on bankstatements_temp.currency=type_currency.currencyid " +
                        " order by bankstatements.bankstatementdate, bankstatements.bankstatementid asc ";
                command.CommandText = sql;


                DataTable dataTable = new DataTable();
                MySqlDataAdapter da = new MySqlDataAdapter(command);
                da.Fill(dataTable);
                totalNumberofEntries = dataTable.Rows.Count;
                DataTables_Table_0.DataSource = dataTable;
                DataTables_Table_0.DataBind();
                connection.Close();
                connection.Dispose();
            }
            else
            {
                int counter = 0;

                foreach (GridViewRow gridRow in DataTables_Table_0.Rows)
                {
                    DropDownList dropDownList = gridRow.FindControl("txtProfileList") as DropDownList;
                    HiddenField HiddenProfileId = gridRow.FindControl("txtHiddenProfileId") as HiddenField;

                    if (HiddenProfileId.Value != "")
                    {
                        dropDownList.SelectedValue = HiddenProfileId.Value;
                    }
                    dropDownList.ID = "Drop" + counter;
                    counter++;
                    PortfolioObject portfolios = new PortfolioObject();
                    DataTable dataTable = portfolios.getPortfolioUniquePortfolioName();
                    dropDownList.DataSource = dataTable;
                    dropDownList.DataValueField = "portfolioid";
                    dropDownList.DataTextField = "uniquePortfolioName";
                    dropDownList.EnableViewState = true;
                    dropDownList.DataBind();

                    dropDownList.Items.Insert(0, new ListItem("None", ""));
                }
            }
        }

        protected void gvBookings_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int counter = 0;
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.TableSection = TableRowSection.TableHeader;
            }

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DropDownList dropDownList = e.Row.FindControl("txtProfileList") as DropDownList;
                HiddenField HiddenProfileId = e.Row.FindControl("txtHiddenProfileId") as HiddenField;

                if (HiddenProfileId.Value != "")
                {
                    dropDownList.SelectedValue = HiddenProfileId.Value;
                    dropDownList.ID = "Drop" + counter;
                    counter++;
                    PortfolioObject portfolios = new PortfolioObject();
                    DataTable dataTable = portfolios.getPortfolioUniquePortfolioName();
                    dropDownList.DataSource = dataTable;
                    dropDownList.DataValueField = "portfolioid";
                    dropDownList.DataTextField = "uniquePortfolioName";
                    dropDownList.EnableViewState = true;
                    dropDownList.DataBind();

                    dropDownList.Items.Insert(0, new ListItem("None", ""));
                }
            }
        }

aspx页面如下:


                                  <asp:GridView ID="DataTables_Table_0" OnPageIndexChanging="GridView1_PageIndexChanging" aria-describedby="DataTables_Table_0_info" role="grid" class="table col-md-12" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="false" OnRowDataBound="gvBookings_RowDataBound" OnRowCommand="gvBookings_RowDeleting" >
                                      <Columns>
                                          <asp:TemplateField HeaderText="Portfolio">
                                              <ItemTemplate>
                                                    <asp:HiddenField runat="server" ID="txtHiddenId" Value='<%# Eval("bankstatementid") %>' />
                                                        <asp:DropDownList ID="txtProfileList"  runat="server" AutoPostback="false" EnableViewState="true" Onchange=<%# String.Format("show_Save_Button({0});", Container.DataItemIndex) %>  Style="width: 150px" class="form-control"  ></asp:DropDownList>
                                              </ItemTemplate>
                                          </asp:TemplateField>
                                          <asp:TemplateField HeaderText="Allocated Portfolio" > 
                                              <ItemTemplate >
                                                    <asp:HiddenField  runat="server"  ID="txtHiddenProfileId" Value='<%# Eval("PortfolioId") %>'  />
                                                    <asp:Label  runat="server"  ID="txtExistingPortfolio" Text='<%# Eval("uniquePortfolioName") %>'  />
                                              </ItemTemplate>
                                          </asp:TemplateField>
                                          <asp:TemplateField HeaderText="Notes" > 
                                              <ItemTemplate >
                                                    <asp:TextBox Width="200"  runat="server" Class="form-control"  ID="txtNote"  EnableViewState="true" Text='<%# Eval("note") %>'  />
                                              </ItemTemplate>
                                          </asp:TemplateField>
                                          <asp:TemplateField HeaderText="Dates">
                                              <ItemTemplate>
                                                  <%# Eval("Date", "{0:dd-MMM-yyyy}") %>
                                              </ItemTemplate>
                                          </asp:TemplateField>
                                          <asp:TemplateField HeaderText="Reference Number">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblReferenceNumber" runat="server"
                                                      Text='<%# Eval("Reference Number") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Title">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblTitle" runat="server" Text='<%# Eval("Title") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Description">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblDescription" runat="server" Text='<%# Eval("Description") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Code">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblCode" runat="server" Text='<%# Eval("Code") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Bundle">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblBundle" runat="server" Text='<%# Eval("Bundle") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Deposit">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblDeposit" runat="server" Text='<%# Eval("Deposit","{0:n}") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Withdrawal">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblWithdrawal" runat="server" Text='<%# Eval("Withdrawal","{0:n}") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Running Total">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblRunningTotal" runat="server" Text='<%# Eval("Running Total","{0:n}") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Currency">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblCurrency" runat="server" Text='<%# Eval("Currency") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                          <asp:TemplateField HeaderText="Bank">
                                              <ItemTemplate>
                                                  <asp:Label ID="lblBank" runat="server" Text='<%# Eval("Bank") %>' />
                                              </ItemTemplate>
                                          </asp:TemplateField>
                                          <asp:TemplateField HeaderText="Action">
                                              <ItemTemplate> 
                                                <asp:LinkButton ID="Remove_Button" runat="server" CausesValidation="false" CommandName="Remove" Text="Delete"  CommandArgument='<%# Eval("bankstatementid") %>'  OnClientClick="return confirm('Are you sure you want to delete this entry?');" />
                                              </ItemTemplate>
                                          </asp:TemplateField>

                                      </Columns>
                                  </asp:GridView>

0 个答案:

没有答案