簡體   English   中英

我在asp.net C#中的中繼器控制中又得到了一條我不想要的行

[英]I have getting one more line which i don't want in repeater control in asp.net c#

我已經使用asp.net和c#在中繼器控件上顯示了數據。 它工作正常,但最后又增加了一條線,我不希望這樣。 但是我不明白為什么會這樣。 而這行我不想要“ System.Data.SqlClient.SqlDataAdapter”

而我的代碼是:.aspx

 <asp:GridView ID="GridView1" DataKeyNames="id" AutoGenerateColumns="false" CellPadding="5"
            runat="server">
            <Columns>

                <asp:TemplateField HeaderText="Add To Compare">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelect" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField HeaderText="companyname" DataField="companyname" />
                <%--   <asp:BoundField HeaderText="sectorname" DataField="sectorname" />--%>
                <asp:BoundField HeaderText="sectorsubname" DataField="sectorsubname" />
                <%--<asp:BoundField HeaderText="Location" DataField="email" />--%>
            </Columns>
            <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
        </asp:GridView>
        <asp:Button ID="btnProcess" Text="Get Selected Records" runat="server" Font-Bold="true"
            OnClick="btnProcess_Click" /><br />

        <asp:Repeater ID="Repeater3" runat="server">
                            <ItemTemplate>
                                <div class="list-1-item">
                                    <div class="list-1-col">
                                        <h4>
                                            <span><%# Eval("companyname")%></span>
                                        </h4>
                                    </div>
                                    <div class="list-1-col center">
                                        <h3>
                                            <span><%# Eval("fieldname") %></span> <b>&nbsp;:</b>

                                             <span><%# Eval("fielddetails")%></span> <b>&nbsp;</b>
                                        </h3>
                                    </div>
                                    <div class="list-1-col center">
                                        <h3>
                                          <%--  <span><%# Eval("fielddetails")%></span> <b>&nbsp;</b>--%>
                                        </h3>
                                    </div>

                                </div>
                            </ItemTemplate>
                        </asp:Repeater>

我的代碼是:.aspx.cs

 protected void btnProcess_Click(object sender, EventArgs e)
    {
        SqlDataAdapter da;
        DataTable dt = new DataTable();
        //dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Name"), new DataColumn("Country") });
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                CheckBox chkRow = (row.Cells[0].FindControl("chkSelect") as CheckBox);
                if (chkRow.Checked)
                {
                    string id = GridView1.DataKeys[row.RowIndex].Value.ToString();
                    con.Open();
                    //string data = "select fieldname,fielddetails from finalcomparedata where compare_id =  " + id.ToString() + "  ";

                    string data = "select cd.companyname as CompanyName,fd.fieldname, fd.fielddetails from finalcomparedata  fd inner join comparedata cd on fd.compare_id = cd.id where compare_id =  " + id.ToString() + "  ";

                    SqlCommand cmd = new SqlCommand(data, con);                    
                    da = new SqlDataAdapter(cmd);                    
                    da.Fill(dt);                    
                    dt.Rows.Add(da);
                } 
                con.Close();
            }
        }
        Repeater3.DataSource = dt;
        Repeater3.DataBind();

    }

您正在將SqlDataAdapater添加為一行。 您的DataTable已填充,無需添加行。

注釋掉或刪除此行:

dt.Rows.Add(da);

更好的方法

為dataTable定義列,並使用SqlDataReader在datatable中添加新行:

protected void btnProcess_Click(object sender, EventArgs e)
{        
    DataTable dt = new DataTable();
    dt.Columns.Add("companymame");
    dt.Columns.Add("fieldname");
    dt.Columns.Add("fielddetails");

    foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chkRow = (row.Cells[0].FindControl("chkSelect") as CheckBox);

            if (chkRow.Checked)
            {
                string id = GridView1.DataKeys[row.RowIndex].Value.ToString();
                con.Open();       

                string data = "select cd.companyname as CompanyName,fd.fieldname, fd.fielddetails from finalcomparedata  fd inner join comparedata cd on fd.compare_id = cd.id where compare_id = @id";
                SqlCommand cmd = new SqlCommand(data, con); 
                cmd.Parameters.AddWithValue("@id", id.ToString());                    
                using(SqlDataReader reader = command.ExecuteReader())
                {
                     while (reader.Read())
                     {
                         DataRow dr = dt.NewRow();
                         dr["companyname"] = reader[0].ToString();
                         dr["fieldname"] = reader[1].ToString();
                         dr["fielddetails"] = reader[2].ToString();

                         dt.Rows.Add(dr);               
                      }           
                 }
            } 
            con.Close();
        }
    }

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM