[英]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> :</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>
我的代碼是:.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.