使用Dynamic datatable在gridview上打印行 [英] Print rows on gridview using Dynamic datatable

查看:73
本文介绍了使用Dynamic datatable在gridview上打印行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有数据表,其中我从数据库获取行,打印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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆