使用Dynamic datatable在gridview上打印行 [英] Print rows on gridview using Dynamic datatable
问题描述
我有数据表,其中我从数据库获取行,打印gridview上的所有行我已经创建了动态数据表并从现在的数据表添加到datarow的行,问题是当我在按钮上打印行时单击它只打印第一行数据表。
这是我的代码。
DataTable Objdatatable = new DataTable();
// Objdatatable = ObjRegBAL.SelectCity(ObjregReports);
DataTable dt = new DataTable();
DataRow博士;
dt.Columns.Add(name,Type.GetType(System.String));
dt.Columns.Add(contactdetails, Type.GetType(System.String));
dt.Columns.Add(Address,Type.GetType(System.String));
dt.Columns.Add(city_area,Type.GetType(System.String));
dt.Columns.Add(Visit_time,Type.GetType(System.String) );
dt。 Columns.Add(visit_purpose,Type.GetType(System.String));
dt.Columns.Add(Interaction,Type.GetType(System.String));
dt.Columns.Add(Already_Computer,Type.GetType(System.String));
dt.Columns.Add(Software,Type。 GetType(System.String));
string name =;
string contactdetails =;
string Address =;
string city_area =;
string visit_time =;
string visit_purpose = ;
string Interaction =;
string Already_Computer =;
string Software =;
int i = 0;
Objdatatable = UtilityClass.GetData(select(partyname +''+','+''+ Contact_person)作为名称,(手机+''+','+''+电子邮件+'''','+' '+ phone)as contactdetails,Address,(City +''+','+''+ Area)as city_area,Visit_time,visit_purpose,Interaction,Already_Computer,Software,area in MarketingCall where city In(+ strSelectedValues_city +)或区域In(+ strSelectedValues_area +)或软件In(+ strSelectedValues_software +)或calltype In(+ strSelectedValues_calltype +)或状态In(+ strSelectedValues_status +)或already_computer In(+ strSelectedValues_computer +)或者NextAction_Dt ='+ TextBox1.Text +',str_temp);
if(Objdatatable.DataSet.Tables [str_temp]。Rows.Count!= 0)
{
for(i = 0;我< = Objdatatable.Rows.Count; i ++)
{
dr = dt.NewRow();
DataRow objdatarow;
objdatarow = Objdatatable。行[0];
name = objdatarow [name]。ToString();
dr [name] = name ;
contactdetails = objdatarow [contactdetails]。ToString();
dr [contactdetails] = contactdetails;
地址= objdatarow [地址] .ToString();
博士[地址] =地址;
city_area = objdatarow [city_area]。ToString();
dr [city_area] = city_area;
Visit_time = objdatarow [visit_time]。ToString();
dr [Visit_time] = Visit_time;
访问_ purpose = objdatarow [visit_purpose]。ToString();
dr [visit_purpose] = visit_purpose;
Interaction = objdatarow [ 互动]。ToString();
dr [互动] =互动;
Already_Computer = objdatarow [Already_computer] .ToString();
if(Already_Computer ==False)
{
dr [Already_computer] =否;
}
else if(Already_Computer ==True)
{
dr [Already_computer] =是;
}
软件= objdatarow [软件] .ToString();
博士[软件] =软件;
dt.Rows.Add(dr);
}
}
GridView1.DataSource = dt;
会话[dv] = dt;
GridView1.DataBind();
GridView1.Visible = true;
ListBox1.ClearSelection();
ListBox2.ClearSelection();
ListBox3.ClearSelection();
ListBox4.ClearSelection();
ListBox5 .ClearSelection();
ListBox6.ClearSelection();
if(update1 ==1)
btnselect.Visible = true;
CheckBox1.Visible = true;
I have datatable in which i am getting rows from database , to print all rows on gridview i have created dynamic datatable and add rows from previous datatable to datarow now, problem is when i print rows on button click it just print first row of datatable.
This is my code.
DataTable Objdatatable = new DataTable();
// Objdatatable = ObjRegBAL.SelectCity(ObjregReports);
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("name", Type.GetType("System.String"));
dt.Columns.Add("contactdetails", Type.GetType("System.String"));
dt.Columns.Add("Address", Type.GetType("System.String"));
dt.Columns.Add("city_area", Type.GetType("System.String"));
dt.Columns.Add("Visit_time", Type.GetType("System.String"));
dt.Columns.Add("visit_purpose", Type.GetType("System.String"));
dt.Columns.Add("Interaction", Type.GetType("System.String"));
dt.Columns.Add("Already_Computer", Type.GetType("System.String"));
dt.Columns.Add("Software", Type.GetType("System.String"));
string name = "";
string contactdetails = "";
string Address = "";
string city_area = "";
string Visit_time = "";
string visit_purpose = "";
string Interaction = "";
string Already_Computer = "";
string Software = "";
int i = 0;
Objdatatable = UtilityClass.GetData("select (partyname + ' ' + ',' + ' ' + Contact_person) as name, (mobile + ' '+','+' '+Email + ' '+','+' ' + phone) as contactdetails,Address,(City + ' '+','+' '+ Area) as city_area, Visit_time,visit_purpose,Interaction,Already_Computer,Software,area from MarketingCall where city In(" + strSelectedValues_city + ") or area In(" + strSelectedValues_area + ") or software In(" + strSelectedValues_software + ") or calltype In(" + strSelectedValues_calltype + ") or status In(" + strSelectedValues_status + ") or already_computer In(" + strSelectedValues_computer + ") or NextAction_Dt='" + TextBox1.Text + "'", "str_temp");
if (Objdatatable.DataSet.Tables["str_temp"].Rows.Count != 0)
{
for (i = 0; i <= Objdatatable.Rows.Count ; i++)
{
dr = dt.NewRow();
DataRow objdatarow;
objdatarow = Objdatatable.Rows[0];
name = objdatarow["name"].ToString();
dr["name"] = name;
contactdetails = objdatarow["contactdetails"].ToString();
dr["contactdetails"] = contactdetails;
Address = objdatarow["Address"].ToString();
dr["Address"] = Address;
city_area = objdatarow["city_area"].ToString();
dr["city_area"] = city_area;
Visit_time = objdatarow["visit_time"].ToString();
dr["Visit_time"] = Visit_time;
visit_purpose = objdatarow["visit_purpose"].ToString();
dr["visit_purpose"] = visit_purpose;
Interaction = objdatarow["Interaction"].ToString();
dr["Interaction"] = Interaction;
Already_Computer = objdatarow["Already_computer"].ToString();
if (Already_Computer == "False")
{
dr["Already_computer"] = "No";
}
else if (Already_Computer == "True")
{
dr["Already_computer"] = "Yes";
}
Software = objdatarow["software"].ToString();
dr["Software"] = Software;
dt.Rows.Add(dr);
}
}
GridView1.DataSource = dt;
Session["dv"] = dt;
GridView1.DataBind();
GridView1.Visible = true;
ListBox1.ClearSelection();
ListBox2.ClearSelection();
ListBox3.ClearSelection();
ListBox4.ClearSelection();
ListBox5.ClearSelection();
ListBox6.ClearSelection();
if (update1 == "1")
btnselect.Visible = true;
CheckBox1.Visible = true;
推荐答案
在FOR语句中你总是使用索引为0的行。
in FOR statement you always use a row with index 0.
objdatarow = Objdatatable.Rows[0];
试试这个
try this
objdatarow = Objdatatable.Rows[i];
只需采取printdocument控件
然后swati写下数据格式视图打印代码并在下面的代码中写入datagridview的数据表
private void button1_Click(object sender,EventArgs e )
{
// printDocument1.Print();
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage + = printDocument1_PrintPage;
printPreviewDialog.Document = printDoc;
printPreviewDialog.ShowDialog() ;
}
private void printDocument1_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
图形g = e.Graphics;
字体ft =新字体(Times New Roman,10,FontStyle.Regular);
g。 DrawString(t,ft,Brushes.Black,new Point(50,100));
位图bm =新位图(this.dataGridView1.Width,this.dataGridView1 .Height);
位图bm1 =新位图(this.dataGridView2.Width,this.dataGridView2.Height);
dataGridView1.DrawToBitmap(bm,new Rectangle(0, 0,this.dataGridView1.Width,this.dataGridView1.Height));
dataGridView2.DrawToBitmap(bm1,new Rectangle(0,0,this.dataGridView2.Width,this.dataGridView2.Height)) ;
e.Graphics.DrawImage(bm,100,200);
e.Graphics.DrawImage(bm1,dataGridView1.Width + 99,200);
}
just take printdocument control
then swati write below code for datagridview printing and in below code write datatable insted of datagridview
private void button1_Click(object sender, EventArgs e)
{
// printDocument1.Print();
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += printDocument1_PrintPage;
printPreviewDialog.Document = printDoc;
printPreviewDialog.ShowDialog();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Font ft = new Font("Times New Roman", 10, FontStyle.Regular);
g.DrawString(t, ft, Brushes.Black, new Point(50, 100));
Bitmap bm= new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
Bitmap bm1 = new Bitmap(this.dataGridView2.Width, this.dataGridView2.Height);
dataGridView1.DrawToBitmap(bm, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
dataGridView2.DrawToBitmap(bm1, new Rectangle(0, 0, this.dataGridView2.Width, this.dataGridView2.Height));
e.Graphics.DrawImage(bm, 100, 200);
e.Graphics.DrawImage(bm1, dataGridView1.Width + 99, 200);
}
这篇关于使用Dynamic datatable在gridview上打印行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!