Reputation: 93
I have display the data on repeater control with asp.net and c#. it's work properly but at last one more line are getting, which i don't want that. but i can't understand why that line it getting. and the line is which i don't want "System.Data.SqlClient.SqlDataAdapter".
and my code is: .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> :</b>
<span><%# Eval("fielddetails")%></span> <b> </b>
</h3>
</div>
<div class="list-1-col center">
<h3>
<%-- <span><%# Eval("fielddetails")%></span> <b> </b>--%>
</h3>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
and my code is : .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();
}
Upvotes: 1
Views: 101
Reputation: 5430
You are adding SqlDataAdapater
as a row. Your DataTable is filled already no need to add rows.
Comment out or delete this line:
dt.Rows.Add(da);
Better approach:
Define columns for your dataTable, and add new row int the datatable using SqlDataReader
:
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();
}
Upvotes: 2