国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

WinForm控件開發中如何實現DataGridView數據導出功能

轉帖|其它|編輯:郝浩|2010-12-02 11:07:54.000|閱讀 1356 次

概述:做WinForm開發離不開一些基本的控件,作為數據列表顯示控件中,其中最為重要的要數 DataGridView,以前用的是一些第三方控件,提供了比較靈活和方便的功能,比如:根據所見即所得導出數據到Excel 或者 文本,沒辦法自力更生才是生存之道。DataGridView的數據導出功能在網絡上搜索后,有一些同仁實現過,但有些是需要依賴Excel ,這種方式不但耦合性強,性能也差,為了一勞永逸的解決這個問題,特改寫了代碼,在此提供給各位同仁,歡迎斧正。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

  做WinForm開發離不開一些基本的控件,作為數據列表顯示控件中,其中最為重要的要數 DataGridView,以前用的是一些第三方控件,提供了比較靈活和方便的功能,比如:根據所見即所得導出數據到Excel 或者 文本,沒辦法自力更生才是生存之道。

  DataGridView的數據導出功能在網絡上搜索后,有一些同仁實現過,但有些是需要依賴Excel ,這種方式不但耦合性強,性能也差,為了一勞永逸的解決這個問題,特改寫了代碼,在此提供給各位同仁,歡迎斧正。

1、首先,看使用方法:

dgvProjectList.ExportToExcel();

或者

dgvProjectList.ExportToExcel("項目列表");

如果不使用數據導出功能,不會對現有 DateGridView控件產生任何負作用,也不占用內存;

2、擴展方法定義:

/// <summary>
/// 將表格數據導出到csv表格文件中
/// </summary>
/// <param name="dgv"></param>
public static void ExportToExcel(this DataGridView dgv)
{
ExportToExcel(dgv, "表格數據");
}
/// <summary>
/// 將表格數據導出到csv表格文件中
/// </summary>
/// <param name="dgv"></param>
public static void ExportToExcel(this DataGridView dgv, string fileName)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "表格數據文件(*.csv)|*.csv";
sfd.FileName = string.Format("{0}.csv", fileName);
if (sfd.ShowDialog() == DialogResult.OK)
{
fileName = sfd.FileName;
ExportHelper.ExportDetails(dgv.GetDataTable(), ExportHelper.ExportFormat.CSV, fileName, ExportHelper.ApplicationType.WindowsForm);
 

}
}
/// <summary>
/// 將表格數據導出到文本文件中
/// </summary>
/// <param name="dgv"></param>
public static void ExportToText(this DataGridView dgv)
{
ExportToText(dgv, "表格數據");
}

/// <summary>
/// 將表格數據導出到文本文件中
/// </summary>
/// <param name="dgv"></param>
public static void ExportToText(this DataGridView dgv, string fileName)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文本文件(*.txt)|*.txt";
sfd.FileName = string.Format("{0}.txt", fileName);
if (sfd.ShowDialog() == DialogResult.OK)
{
fileName = sfd.FileName;
ExportHelper.ExportDetails(dgv.GetDataTable(), ExportHelper.ExportFormat.TXT, fileName, ExportHelper.ApplicationType.WindowsForm);
}
}

3、導出類定義:

//導出輔助類

public class ExportHelper
{
/// <summary>
/// Export format enumeration
/// </summary>
public enum ExportFormat : int
{
/// <summary>
/// CSV
/// </summary>
CSV,
/// <summary>
/// DOC
/// </summary>
DOC,
/// <summary>
/// TXT
/// </summary>
TXT
};

/// <summary>
/// 應用程序類型
/// </summary>
public enum ApplicationType : int
{
WindowsForm,
Web
}

/// <summary>
/// 導出SmartGridView的數據源的數據為Excel
/// </summary>
// <param name="dt">數據源</param>
/// <param name="fileName">文件名</param>
/// <param name="ApplicationType">應用宿主類型</param>
public static void ExportDetails(DataTable dt, string fileName, ApplicationType ApplicationType)
{
ExportDetails(dt, ExportFormat.CSV, fileName, ApplicationType);
}

#region ExportDetails OverLoad : Type#1

// Function : ExportDetails
// Arguments : DetailsTable, FormatType, FileName
// Purpose : To get all the column headers in the datatable and
// exorts in CSV / Excel format with all columns

public static void ExportDetails(DataTable DetailsTable, ExportFormat FormatType, string FileName, ApplicationType ApplicationType)
{
try
{
if (DetailsTable.Rows.Count == 0)
throw new Exception("There are no details to export.");

// Create Dataset
DataSet dsExport = new DataSet("Export");
DataTable dtExport = DetailsTable.Copy();
dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport);

// Getting Field Names
string[] sHeaders = new string[dtExport.Columns.Count];
string[] sFileds = new string[dtExport.Columns.Count];

for (int i = 0; i < dtExport.Columns.Count; i++)
{
sHeaders[i] = dtExport.Columns[i].ColumnName;
sFileds[i] = ReplaceSpecialChars(dtExport.Columns[i].ColumnName);
}

if (ApplicationType == ApplicationType.Web)
{
Export_with_XSLT_Web(dsExport, sHeaders, sFileds, FormatType, FileName);
}
else if (ApplicationType == ApplicationType.WindowsForm)
{
Export_with_XSLT_Windows(dsExport, sHeaders, sFileds, FormatType, FileName);
}
}
catch (Exception Ex)
{
throw Ex;
}
}

#endregion // ExportDetails OverLoad : Type#1

#region ExportDetails OverLoad : Type#2

// Function : ExportDetails
// Arguments : DetailsTable, ColumnList, FormatType, FileName
// Purpose : To get the specified column headers in the datatable and
 // exorts in CSV / Excel format with specified columns

public static void ExportDetails(DataTable DetailsTable, int[] ColumnList, ExportFormat FormatType, string FileName,
ApplicationType ApplicationType)
{
try
{
if (DetailsTable.Rows.Count == 0)
throw new Exception("There are no details to export");

// Create Dataset
DataSet dsExport = new DataSet("Export");
DataTable dtExport = DetailsTable.Copy();
dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport);

if (ColumnList.Length > dtExport.Columns.Count)
throw new Exception("ExportColumn List should not exceed Total Columns&quot;);

// Getting Field Names
string[] sHeaders = new string[ColumnList.Length];
string[] sFileds = new string[ColumnList.Length];

for (int i = 0; i < ColumnList.Length; i++)
{
if ((ColumnList[i] < 0) || (ColumnList[i] >= dtExport.Columns.Count))
throw new Exception("ExportColumn Number should not exceed Total Columns Range");

sHeaders[i] = dtExport.Columns[ColumnList[i]].ColumnName;
sFileds[i] = ReplaceSpecialChars(dtExport.Columns[ColumnList[i]].ColumnName);
}

if (ApplicationType == ApplicationType.Web)
{
Export_with_XSLT_Web(dsExport, sHeaders, sFileds, FormatType, FileName);
}
else if (ApplicationType == ApplicationType.WindowsForm)
{
Export_with_XSLT_Windows(dsExport, sHeaders, sFileds, FormatType, FileName);
}
}
catch (Exception Ex)
{
throw Ex;
}
}

#endregion // ExportDetails OverLoad : Type#2

#region ExportDetails OverLoad : Type#3

// Function : ExportDetails
// Arguments : DetailsTable, ColumnList, Headers, FormatType, FileName
// Purpose : To get the specified column headers in the datatable and
// exorts in CSV / Excel format with specified columns and
// with specified headers

public static void ExportDetails(DataTable DetailsTable, int[] ColumnList, string[] sHeaders, ExportFormat FormatType,
string FileName, ApplicationType ApplicationType)
{
try
{
if (DetailsTable.Rows.Count == 0)
throw new Exception("There are no details to export");

// Create Dataset
DataSet dsExport = new DataSet("Export");
DataTable dtExport = DetailsTable.Copy();
dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport);

if (ColumnList.Length != sHeaders.Length)
throw new Exception("ExportColumn List and Headers List should be of same length");
else if (ColumnList.Length > dtExport.Columns.Count || sHeaders.Length > dtExport.Columns.Count)
throw new Exception("ExportColumn List should not exceed Total Columns");

// Getting Field Names
string[] sFileds = new string[ColumnList.Length];

for (int i = 0; i < ColumnList.Length; i++)
{
if ((ColumnList[i] < 0) || (ColumnList[i] >= dtExport.Columns.Count))
throw new Exception("ExportColumn Number should not exceed Total Columns Range");

sFileds[i] = ReplaceSpecialChars(dtExport.Columns[ColumnList[i]].ColumnName);
}

if (ApplicationType == ApplicationType.Web)
{
Export_with_XSLT_Web(dsExport, sHeaders, sFileds, FormatType, FileName);
}
else if (ApplicationType == ApplicationType.WindowsForm)
{
Export_with_XSLT_Windows(dsExport, sHeaders, sFileds, FormatType, FileName);
}
}
catch (Exception Ex)
{
throw Ex;
}
}

/// <summary>
/// 導出SmartGridView的數據源的數據
/// </summary>
/// <param name="DetailsTable">數據源</param>
/// <param name="columnNameList">導出的列的列名數組</param>
/// <param name="sHeaders">導出的列標題數組</param>
/// <param name="FormatType">導出文件的格式</param>
/// <param name="FileName">輸出文件名</param>
/// <param name="ApplicationType">應用宿主類型</param>
public static void ExportDetails(DataTable DetailsTable, string[] columnNameList, string[] sHeaders,
ExportFormat FormatType, string FileName, ApplicationType ApplicationType)
{
List<int> columnIndexList = new List<int>();
DataColumnCollection dcc = DetailsTable.Columns;

foreach (string s in columnNameList)
{
columnIndexList.Add(GetColumnIndexByColumnName(dcc, s));
}

ExportDetails(DetailsTable, columnIndexList.ToArray(), sHeaders, FormatType, FileName, ApplicationType);
}

#endregion // ExportDetails OverLoad : Type#3

#region ExportDetails OverLoad : Type#3

// Function : ExportDetails
// Arguments : DetailsTable, FormatType, FileName
// Purpose : To get all the column headers in the datatable and
// exorts in CSV / Excel format with all columns
public void ExportDetails(DataTableCollection DetailsTables, ExportFormat FormatType, string FileName, ApplicationType ApplicationType)
{
try
{
string NewFileName;

foreach (DataTable DetailsTable in DetailsTables)
{
if (DetailsTable.Rows.Count == 0)
throw new Exception("There are no details to export.");

NewFileName = FileName.Substring(0, FileName.LastIndexOf("."));
NewFileName += " - " + DetailsTable.TableName;
NewFileName += FileName.Substring(FileName.LastIndexOf("."));

// Create Dataset
DataSet dsExport = new DataSet("Export");
DataTable dtExport = DetailsTable.Copy();
dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport);

// Getting Field Names
string[] sHeaders = new string[dtExport.Columns.Count];
string[] sFileds = new string[dtExport.Columns.Count];

for (int i = 0; i < dtExport.Columns.Count; i++)
{
sHeaders[i] = dtExport.Columns[i].ColumnName;
sFileds[i] = ReplaceSpecialChars(dtExport.Columns[i].ColumnName);
}

if (ApplicationType == ApplicationType.Web)
{
Export_with_XSLT_Web(dsExport, sHeaders, sFileds, FormatType, FileName);
}
else if (ApplicationType == ApplicationType.WindowsForm)
{
Export_with_XSLT_Windows(dsExport, sHeaders, sFileds, FormatType, FileName);
}
}
}
catch (Exception Ex)
{
throw Ex;
}
}

#endregion //ExportDetails OverLoad : Type#4

#region Export_with_XSLT_Web

// Function : Export_with_XSLT_Web
// Arguments : dsExport, sHeaders, sFileds, FormatType, FileName
// Purpose : Exports dataset into CSV / Excel format
private static void Export_with_XSLT_Web(DataSet dsExport, string[] sHeaders, string[] sFileds, ExportFormat FormatType, string FileName)
{
try
{
// Appending Headers
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = String.Format("text/{0}", FormatType.ToString().ToLower());
HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.{1}", FileName, FormatType.ToString().ToLower()));
//HttpContext.Current.Response.ContentEncoding = encoding;
 

// XSLT to use for transforming this dataset.
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.Default);

CreateStylesheet(writer, sHeaders, sFileds, FormatType);
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);

XmlDataDocument xmlDoc = new XmlDataDocument(dsExport);
XslCompiledTransform xslTran = new XslCompiledTransform();
xslTran.Load(new XmlTextReader(stream));

System.IO.StringWriter sw = new System.IO.StringWriter();
xslTran.Transform(xmlDoc, null, sw);

//Writeout the Content
HttpContext.Current.Response.Write(sw.ToString());
sw.Close();
writer.Close();
stream.Close();
HttpContext.Current.Response.End();
}
catch (ThreadAbortException Ex)
{
string ErrMsg = Ex.Message;
}
catch (Exception Ex)
{
throw Ex;
}
}

#endregion // Export_with_XSLT

#region Export_with_XSLT_Windows

// Function : Export_with_XSLT_Windows
// Arguments : dsExport, sHeaders, sFileds, FormatType, FileName
// Purpose : Exports dataset into CSV / Excel format
private static void Export_with_XSLT_Windows(DataSet dsExport, string[] sHeaders, string[] sFileds,
ExportFormat FormatType, string FileName)
{

try
{
// XSLT to use for transforming this dataset.
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);

CreateStylesheet(writer, sHeaders, sFileds, FormatType);
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);

XmlDataDocument xmlDoc = new XmlDataDocument(dsExport);
XslCompiledTransform xslTran = new XslCompiledTransform();
xslTran.Load(new XmlTextReader(stream));

System.IO.StringWriter sw = new System.IO.StringWriter();
xslTran.Transform(xmlDoc, null, sw);

//Writeout the Content
StreamWriter strwriter = new StreamWriter(FileName, false, Encoding.Default);
strwriter.WriteLine(sw.ToString());
strwriter.Close();
sw.Close();
writer.Close();
stream.Close();
}
catch (Exception Ex)
{
throw Ex;
}
}

#endregion // Export_with_XSLT

#region CreateStylesheet

// Function : WriteStylesheet
// Arguments : writer, sHeaders, sFileds, FormatType
// Purpose : Creates XSLT file to apply on dataset's XML file
private static void CreateStylesheet(XmlTextWriter writer, string[] sHeaders, string[] sFileds, ExportFormat FormatType)
{
try
379 {
// xsl:stylesheet
string ns = "//www.w3.org/1999/XSL/Transform";
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("xsl", "stylesheet", ns);
writer.WriteAttributeString("version", "1.0");
writer.WriteStartElement("xsl:output");
writer.WriteAttributeString("method", "text");
writer.WriteAttributeString("version", "4.0");
writer.WriteEndElement();

// xsl-template
writer.WriteStartElement("xsl:template");
writer.WriteAttributeString("match", "/");

// xsl:value-of for headers
for (int i = 0; i < sHeaders.Length; i++)
{
writer.WriteString("\"");
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", "'" + sHeaders[i] + "'");
writer.WriteEndElement(); // xsl:value-of
writer.WriteString("\"");
if (i != sFileds.Length - 1) writer.WriteString((FormatType == ExportFormat.CSV) ? "," : " ");
}

// xsl:for-each
writer.WriteStartElement("xsl:for-each");
writer.WriteAttributeString("select", "Export/Values");
writer.WriteString("\r\n");

// xsl:value-of for data fields
for (int i = 0; i < sFileds.Length; i++)
{
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", sFileds[i]);
writer.WriteEndElement(); // xsl:value-of
writer.WriteString("\"");
if (i != sFileds.Length - 1) writer.WriteString((FormatType == ExportFormat.CSV) ? "," : " ");
}

writer.WriteEndElement(); // xsl:for-each
writer.WriteEndElement(); // xsl-template
writer.WriteEndElement(); // xsl:stylesheet
writer.WriteEndDocument();
}
catch (Exception Ex)
{
throw Ex;
}
}

public static string ReplaceSpecialChars(string input)
{
// space -> _x0020_
// % -> _x0025_
// # -> _x0023_
// & -> _x0026_
// / -> _x002F_

input = input.Replace(" ", "_x0020_")
.Replace("%", "_x0025_")
.Replace("#", "_x0023_")
.Replace("&", "_x0026_")
.Replace("/", "_x002F_");

return input;
}
/// <summary>
/// 根據數據列的列名取數據列的列索引
/// </summary>
/// <param name="dcc">數據列集合</param>
/// <param name="columnName">數據列的列名</param>
/// <returns></returns>
public static int GetColumnIndexByColumnName(DataColumnCollection dcc, string columnName)
{
int result = -1;

for (int i = 0; i < dcc.Count; i++)
{
{
break;
}
}

return result;
}
#endregion // WriteStylesheet

}
 


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:博客轉載

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
国产乱了真实在线观看 | 国内精品在线一区二区 | 国产又粗又猛又黄又爽视频 | 探花视频在线观看 | 中文精品免费视频 | 亚洲一区二区三区在线观看播放 | 欧美高清日韩在线 | 99re热这里只有精 | 国产对白真实在线 | 日韩午夜剧场免费网站观看 | 欧美日本一区激情视频 | 激情小说激情图片 | 日皮视频免费观看 | 日本精品一区二区在线播放 | 一级免费视频在线观看 | 欧美亚洲精品三区 | 国产国语自产拍在线观看 | 国产香蕉尹人视频在 | 日韩高清电影免费观看 | 亚洲高清国产品国语在线观看 | 性色aⅴ按摩精品在线 | 性欧美精品一区二区三区在线播放 | 老熟女乱一区二区三区 | 韩国电影院 | 色一情一乱一乱一 | 国产亚洲精品导航 | 国产午夜福利亚洲第一 | 99re6这里只有精品地址 | 在线观看高清三级综合 | 无人区码一码二码w358cc | 中文www新版资源在线天堂√ | 国内精品 | 中文字幕在线视频观看网站 | 国产精品黄在线观看免费 | 欧美另类一区二区在线观看 | 一区二区在线视 | 51国产愉自视频区视频 | 国产91色在 | 在线观看中文字幕码 | 国产精品色内内在线播放 | 依依成人影院在线观看 | 国产又猛又黄又爽 | 日韩幕无线码一区中文 | 乱仑图片 | 精品国产爽香蕉在线观看 | 精品国产a毛| 国产无人区一码二码 | 欧美午夜视频一区二区三区 | 日韩综合亚洲色在线影院 | 99九九热只有国产精品 | 国产精选在线播放 | 国产凹凸在线一区二区 | 国产盗摄电影区9876色 | 亚洲视频中文字幕在线 | 国产亚洲欧美另类一区二区三区 | 中文字幕亚洲欧美一区 | 亚洲日韩国产一区二区三区在线 | 视频一区视频二区在线观看 | 男女在线观看免费视频公开 | 精品精品国产免费看不卡 | 国产a∨精品一区二区蜜臀 成年在线网站免费观看无广告 | 免费国产女主播微拍视频 | 国产午夜亚洲精品理论片不卡 | 国精产品一区一区三区有 | 被窝网国产在线视频色 | 日本最新一区二区三区免费看 | 国产精产国品一二三在观看 | 亚洲精品影院在 | 国产精品偷伦视频 | 欧美高清在线精品一 | 色护士极品影院 | 国产真实自在自线免费精品 | 亚欧成人 | 国产日韩一区二区在线观看 | 国产精品不卡福利小 | 香蕉免费一区二区三区 | 国产伦精品一区二区三区精品 | 夜夜未满十八勿进的爽爽影院 | 亚洲综合在线一区二区三区 | 欧美综合自拍亚洲欧美人 | 苍苍影院午夜最新 | 免费的影视大全 | 国产综合欧美无毒不卡怡红院 | 亚洲欧美日韩中文另类不卡 | 日本电影中文字幕 | 永久www忘忧草 | 免费草逼视频网站 | 露脸国产自产拍在线观看 | 亚洲国产手机看片 | 欧美日本国产日韩一区二区三区 | 欧美国产在线看 | 国产综合视频在线观看 | 亚洲国产日韩a在线观看 | 4480yy午夜私人影院 | 欧美a在线看 | 日本国产一区在线观看 | 国产在线ts| 亚洲人成人一区二区三区 | 日韩免费码中文在线观看 | 国产制服国产制服一区二区 | 日韩亚洲不卡中文字幕在线 | 亚洲欧美日韩国产综合 | 蜜臀精品一区二区三区在线观看 | 日本宅男欧美国产日韩 | 重口视频二区在线观看 | 国产在线地址2025 | 国产在线精品观看一区欧美 | 又大又粗又硬又黄的免费视频 | 日本五十路熟 | 国产名人一区二区三区 | 欧美yw精品日本国产精品 | 欧美性色欧美a在线在线播放 | 91精品欧美激情在线播放 | 小蝌蚪日韩国产高清影片 | 亚洲欧美日韩一区在线 | 国产乱码精品一区二区三区百度 | 日韩伦理片免费在线观看 | 女人一级特纯黄 | 欧美精品亚洲精品日韩精品 | 亚洲国产99在线精品一区 | 国产羞羞视频在线观看永久网站 | 在线亚洲精品第一 | 在线观看中文最近最新观看 | 天堂资源最新在线 | 天堂资源中文在线 | 秋霞影院伦理在线看 | 性午夜视频在线观看 | 秋霞影视 | 9cao在线观| 国产理论视频在线观看 | 国产午夜福利在线观看1000集 | 国产女人喷潮在线观看视频一 | 国产亚洲欧美日韩精品一区二区 | 欧美亚洲一区二区三区导航 | 一区二区免费国产在线观看 | 国产精品三级三级 | 日本综合一区二区三区 | 区三区不卡 | 国产综合a级片视频 | 国产精品视频26uuu | 日韩欧美一区二区三区在线观看 | 最新院线大片抢先看 | 国产在线不卡一区 | 亚洲vr精品在着在线观看 | 91香蕉国产线在线观看免费 | 国产精品太长太粗太 | 在线日产精品一区 | 日本a级 | 91福利在线观看视频 | 亚洲成a人片在线观看高清 日韩亚洲国 | 丝袜一区二区高跟鞋 | 在线欧美日韩亚洲国产一区 | 免费观看视频成人国产 | 国女精品爽爽一区二区 | 国产精品丝袜高跟鞋 | 久热国产精品视频 | 日韩午夜激情网址在线观看 | 鲁鲁鲁鲁鲁视 | 日韩欧美一区二区在线观看 | 羞羞网站在线观看 | 日韩专区一中文字目一区二区 | 欧洲精品亚洲精品日韩专区 | 国产一区二区三区欧美精品 | 国产在线高清网址导航 | 无线码免费播放 | 国产精品成人aaaa网站女吊丝 | 欧洲一曲二曲三曲视频 | 国产精品外围在线观看 | 亚洲天堂网一区二区三区四区 | 国产线精品视频在线观看 | 日本亚洲欧美阿v天堂在线观看 | 日韩欧美亚洲中文字幕 | 99视频30精品视频在线观看 | 亚洲欧美日韩激情在线观看 | 欧洲亚洲一区二 | 最近中文字幕高清中文字 | 欧美日韩自 | 亚洲和欧洲一码二码区别在 | 国产日韩免费视 | 区三区国产高清视频 | 国产自产视 | 91精品国产品国语在线 | 国产一国产二国产三国产 | 免费国产偷人三大片视频 | 最新欧美精品一区二区三区 | 国产理论高清一卡二卡三卡 | 欧美亚洲日本在线播放 | 蜜柚视频在线观看免费完整 | 日韩午夜免费不卡视频 | 日韩亚洲欧美三区中文字幕 | 男女做aj视频免费的网站 | 国产福利影院在线 | 老女肥女熟国产在线视频网址 | 91看片婬黄大片91桃色 | 精品国产呦系列在线观看 | 国产一区视频在线免费观看 | 国产黄a三级三级三级看三级 | 国产精品自在拍一区二区不卡 | 国产自产拍精品视频免费看 | 国产欧美日韩精品一区二区三区 | 国产精品高清在线看 | 九色91国偷自产中文字幕 | 亚洲欧美综合另类 | 91午夜理伦私人影院 | 五月天丁 | 国产黑色丝袜在线观看下 | 精品国产综合成人亚洲区 | 97se亚洲国产综合自在线观 | 国产小视频在 | 日本深夜18免费看片 | 动漫h片在线播放免费高清 日韩一区二区三区四区五区 | 日韩中文高清在线 | 精品国产人成亚洲区 | 日本在线观看中文字幕无线观看 | 国产精品偷窥熟女欧美激 | 国内成人福利短视频在线 | 成人日韩在线视频观看 | 欧美a级片在线观看 | 9亚洲色 | 欧美在线观看成人高清视频 | 91精品啪国产在线观看 | 日韩中文字幕无砖 | 国内精品视频在线观看 | 欧美日韩国产无线码无毒 | 国产精品99在线观看 | 中国免费xxxx视频在线观看 | 午夜看片a福利 | 精品国产乱码一区二区三区 | 国产精品vr专区 | 日本三级aa在线观看不卡 | 好吊色青青青国产在线播放 | 囯产精品一区二区三区线 | 521a成v视频网站在线入口 | 亚洲一区二区三区影院 | 草草精品在线视频 | 精品三级乱伦免费 | 国产精品福利电影一区二区三 | h成人动漫 | 欧美精品国产日韩一区二区三区 | 三年片在线观看免费大全哔哩哔哩 | 在线精品自拍亚洲第一区 | 女同女同精品一区二区 | 国产第一页屁 | 日韩国产卡一卡二卡三卡四 | 色吊丝中文字幕一区二区三区 | 女性高爱潮免费有 | 国产拍拍拍精品视频 | 蜂鸟影院大全免费观看 | 国产目拍亚洲精品 | 国产尤物精品一区二区三区 | 在线精品视 | 水蜜桃视频网站在线观看网址 | 国产日韩一区二区不卡视频 | 国产在线观看成人 | 亚洲欧美自拍明星合 | 日本在线播放 | 日韩在线视频一区二区三区四 | 91干逼| 国产91精品在线观看 | 日韩性感美女在线电影一区二区 | 国产精品jizz在线观看直播 | 国产办公室沙发系列高清 | 国产一区二区丝袜美腿在线 | 国产美女自卫慰水免费视频 | 久热热热 | 欧美国产日韩另类 | 中文一区二区 | 国产精品人成在线播放 | 日韩欧美一区二区三区中文精品 | 日韩欧美在线综合网 | 亚洲+国产+激情 | 国产18女人与黑人在线播放 | 欧美日韩高清视免费一区二区 | 成全影院大全在线观看国语 | 国产香蕉人在线播放视频网站 | 精品一区二区三区国产在线观看 | 欧美日韩精品一区二区在线观看 | 91区国产福利在线观看午夜 | 九九视频| h视频在线观看免费 | 精品国精品自拍自在线 | 国产肥熟老 | 护士在办公室被躁bd在线观看 | 97视频在线播放免费观看视频 | 玖玖综合九九在线看 | 国产黑色丝袜视频在线 | 国产校园另类小说区 | 精品蓝导航视频福利在线 | 日本韩国一区 | 高跟熟女一区二区 | 免费观看电影真不卡 | 激情影院內射美女 | 九九视频在线观看免费 | 日韩欧美亚洲大片 | 日韩欧美一区二区三区 | 亚洲国产欧美 | 亚洲人成网址在线播放 | 国产精品一区高清在线观 | 91精品国产自产在线观看永久 | 免费国产a国产片高清 | 天天综合网~永久入口 | 欧美国产亚洲一区二区三区 | 亚洲国产欧美在线 | 国产激情在线观看免费视频 | 日本黄页在线观看免费 | 国产在线播放成人免费 | 日韩午夜理| 国产欧美日本韩国高清 | 免费国产a国产片精品 | 精品一区精品二区制 | 欧美精品一二三区 | 国产欧美视频一区二区三区 | 欧美激情一区二区三级高清视频 | 欧美激情欧美狂野 | 久99视频精品免费观看福利 | 蜜桃臀無碼內射一區二區三區 | 国内精品自在自线视频香蕉 | 国产福利微拍 | 日韩中文字幕免费视频 | 日韩高清在线精品观看一区二区 | 国产精品导航一区二区 | 国产欧美一区二区精品每日更新 | 亚洲人成aⅴ在线播放 | 国产综合精品一区二区三区 | 国产最熱門最齊全的電影 | 国产精品+日 | 亚洲精品vs中文字幕白桨 | 精品尤物在 | 国产日产中文在线观看 | 欧美在线换 | 手机高清热播韩剧美剧电视剧 | 日本免费人成视频在线观看 | 伦理小说中文字幕视频 | 成人影院在线观看 | 欧美又粗又大又长又硬一级a | 狼群影院视频在线观看高清版 | 国产探花在线播放 | 亚洲午夜一区二区三区在线观看 | 欧美人体视频一区二 | 日韩欧美亚洲精品 | 亚洲午夜国产片在线观看 | 综合在线亚洲 | 欧美午夜理伦三级在线 | 91区国产福利在线观看午夜 | 国产在线精品观看免费观看 | 国产亚洲精品精品国产亚洲综合l | 91精品人 | 99精品国产自产在线观看 | 全部免费的电视剧大全 | 国产精品自产拍在线网站 | 国产精精品在线免费看 | 亚洲综合一区二区三区人妖 | 亚洲一区二区三区香蕉下载 | 欧美特黄一片aa大片免费看 | 在线天堂新版最新版在线8 免费人成网上在线观看 | 国产亚州 | 成年人免费在线观看视频 | 国产免费爽爽视频 | 靠逼视频一区二区三区 | 欧美日韩国产一卡二卡在线 | 国产秘精品入口免费软件 | 成色在线综合网站 | 国产精品视频国产永久视频 | 国产精品思思五月婷高清在线 | 国产男女免费完整视频 | 国产愉拍精品视频手 | 精品国产自在91欧 | 中文字幕婷婷在 | 国产卡戴珊在线根本喂不饱2 | 西瓜影音免费 | 大伊香蕉在线观看视频 | 国产人成视频在线观看 | 国产精品秘果冻 | 国产精精品在线免费看 | 婷婷蜜桃国产精品一区 | 国产精品爽片在线观看 | 国产男女免费完整视频网页 | 欧美日韩精品一二三区在线视频 | 欧美人与动交zoz0 | 在线观看第一页 | 国内精品国产成 | 国产玉足榨精视频在线 | 日韩欧美国产高清在线观看 | 男女互摸视频 | 精品日韩一区二区三区四区五 | 国产小说 | 中文字幕欧美日 | 琪琪影院 | 国产在线观看一级二级三级 | 东方aⅴ免费观看 | 国产影视乱伦日本 | 欧美交换乱理伦 | 老妇喷水一区二 | 欧美日韩在 | 国产91对白在线观看 | 巨爆中文字幕巨爆区 | 尤物视频免费观看 | 最新院线大片抢先看 | 亚洲国产日韩欧美一级三级 | 日韩精品一区二区在线观看播放 | 亚洲欧美中文高清在线专区 | 欧美精品九九9 | 97在线精品视频免费 | 国产免费又刺激 | 最新国产亚洲人 | 日本三级在线看观 | 日韩精品中文字幕在线观看 | 国产精品va在线观看丝瓜影院 | 欧美日韩一本无线码专区 | 玖玖免费视频在线观看 | 日韩欧美中文字幕在线三区 | 国内揄拍国内精品视 | 国产91精品尤物爱c欧美在 | 国产精品一区二区97 | 亚洲v中文在线播放免费 | 国产欧美日本在线 | 九九免费视频网站 | 国产激情免费 | 国产午夜专区在线观看 | 最新电影 | 国产看片一区二区三区 | 噼里啪啦影院大 | 欧美视频一区二区三区在线观 | 免费高清电影在线观看 | 精品黑人一区二区三区 | 亚洲欧美中文一区二区三区 | 国产精品乱码一区二区视频 | 亚洲∧v久 | 手机看片高清国产日韩片 | 欧美日韩国产一区二区三 | 丰乳翘臀| 欧美特黄视 | 精品国产柚木在线 | 亚洲日韩欧美一区二区在线 | 欧美伊人影院 | 国产欧美国产精品第二区 | a级国产精品理论片在线观看 | 菠萝菠萝蜜视频在线观看免 | 在线观看一二三四区 | 欧美日韩aa一级视频 | 国产精品高清 | 国产馆精品推荐在线观看 | 日本国产欧美在线观看 | 欧美日韩在线在线观看 | 乱伦高清综合免 | 国产国拍亚洲精品午夜不嘿嘿 | 亚洲免费青草视频在线 | 欧美亚洲国产日韩完全在线电影 | 秒拍视频 | 三级特黄60分钟在线观看 | 人人天天夜夜曰曰狠狠狠肉感 | 国产极品网站在线观看 | 日韩精品武 | 日本阿v视频免 | 国产91爱剪辑直播在线观看 | 国产初高中生真实在线视频 | 国产免费爽爽视频 | 欧美日韩国产另类精品图二区 | 综合永久入口 | 欧美日韩精品免费观看视频 | 中文字幕日韩wm | aⅴ手机看片高清 | 国产成a人片在线观看视频下载 | 九九热精品在 | 中文在线日韩 | 欧美不卡一区二区 | 国产极品尤物铁牛tv网站 | 国产极品高颜值美女在线 | 日韩欧美精品在线观看视频 | 私人订制1080在线观看免费 | 欧美黑人巨大精 | 午夜淫片| 亚洲高清中文字幕综合网 | 亚洲精品国产自在现线最新 | 亚洲高清视频一区 | 欧美喷潮系列在线观看 | 九色精品高清在线播放 | 免费电视剧 | 羞羞影院午夜男女爽爽 | 久色91| 丰满的闺蜜2中文字幕 | 亚洲国产精品自在拍在线播放 | 亚洲国产中文字幕 | 精品国产欧美一区二区日韩 | 日韩精品免费观看视频 | 日本旅遊情報一網打盡 | 欧美一区二区精品系列在线观看 | 国产丝袜在线精品丝袜 | 99视频都是精品热在 | 国产激情澎湃视频在线观看 | 国语自产偷成人精品视频 | 91蝌蚪网| 精品乱子伦一区二区三区火豆网 | 中文文字幕视频在线观看 | 国产精品成人不卡在线观看 | 国语自产精品视频一区二区 | 国产日韩精品影院 | 大地影视mv高清视频在线观看 | 亚洲成ⅴ人片乱码色午夜 | 三区四区五区高 | 精品国产午夜肉伦 | 国产精品午夜福利在线观看 | 福利吧导航 | 日本高清一区二区免费2025 | 国产在线精品免费一区二区三区 | 欧洲亚洲日韩欧美一区二区 | 精品国产精品国产自在久国产 | 日本高清视频在线www色 | 一区二区三区免费观看 | 日本一本无道码日韩精品 | 欧美色综合精品视频在线观看 | 国产精品伊人 | 福利免费0948视频 | 日韩午夜福利在线免费观看 | 国产精品视频第二区第二页 | 国产精品电影在线观看 | 日韩在线中文字幕视频 | 无尽动漫性视频╳╳╳3d | 免费观看成人欧美www色 | 欧美三级欧美一级 | 亚洲欧美精品一区二区 | 不卡一区 | 1313午夜精 | 在线精品自| 视频一二三区 | 三级国产4国语三级在线 | 欧美日韩免费一区二区在线观看 | 国产v综合v亚洲欧美大另类 | 福利片福利一区二区三区 | 国产护士视频在线观看 | 91破解版在线 | 免费国产不卡一区二区三区 | 国产偷窥盗拍丰满老熟女 | 中文文字幕视频在线观看 | 国产人妇三级视频在线观看 | 欧美国产日韩a欧美在线观看 | a级国产乱理伦片在线播放 夫妻之间免费观看完整版 精品女同 | 国内精品视频一区二区 | 神马电影 | 色老板在线精品免费视频 | 欧美在线一级午夜免费 | 18勿禁免费网站大全 | 亚洲韩国欧美一区二区三区 | 欧美亚洲国产清纯综合图区 | 国产精品1000部在线观看 | 日韩在线观看中文字幕一区二区 | 精品一区二区三区影院在线午 | 国产又黄又粗又硬又爽视频 | 日韩福利| 在线成人精品国产区免费 | 女人一级视频在线观看 | 国产日韩ai换脸在线第一页 | 欧美电影一区二 | 被几个男的一起添好舒服 | 国产精品乱码一区二区视频 | 国产91chinese在线 | 免费人成在线观看网站品爱网 | 国产欧美日韩电影在线观看 | 国产91护士玉足脚交在线播放 | 成人免费va视 | 国产一级淫片a免费播放口 国产ts在 | 狠狠五月天 | 在线日本高清不卡免费v | 国语对白嫖老妇胖老太 | 欧美三级欧美一级在线视频 | 国产狂喷潮在线观看中文 | 日韩性爱官方网站 | 欧美精品一区二区三区无卡片 | 3571色院影一区二区三区 | 国产欧美一区二区综合 | 精品女同一区二区 | 中文字幕2025 | 国产午夜小视频在线不卡 | 99精品国产高清一区 | 400部国产精品偷自产在线 | 日韩国产欧美二区手机在线 | 神马光棍 | 有码在线中字 | 欧洲精品视频一二三区 | 国产亚洲精品精品国产亚洲综合 | 久热综合在 | 一区二区三区国产精品午夜福利 | 国产精品爽黄69天堂a | 国产午夜福利在线播放 | 欧美日韩国产在线观看网站 | 香蕉在线精品视频在线观看2 | 亚洲综合国产一区二区三区 | 日韩一区在线观看免费观看免费 | 真人性生交免费视频 | 日本人視頻網站一 | 视频免费 | 黄骗在线免费观看 | 国产在线观看第二页 | 国产在亚洲线视频观看。 | 日韩在线免费播放 | 日产乱码一二三区别免费演员表 | 精品国产第一国产综合精品 | 一区二区三区欧美日韩 | 亚洲视频精品 | 欧美亚洲国产精品第 | 日产无人区一线二线三线最新版 | 欧美人与动交zoz0 | 国产精品欧美亚洲制服 | 欧美精品亚洲 | 日韩高清第一页 | 日本在线观看一区 | 国产精品一卡二卡三卡 | 欧美在线观看网站 | gogogo高清视频高清大全 | 国内精品自在自线视频在线观 | 视频一二亚洲国产二区 | 性生大片免| 高清伦理 | 欧美日韩国产丝袜另类 | 午夜成人影院 | 国产精品毛多多水多 | 日本a∨| 国产愉拍精品视频手 | 亚洲欧美日韩高清在线电影 | 亚洲性爱免费网址 | 国产原创导航 | 中文字幕不卡高 | 男人添女人30分钟免费 | 日本乱理伦片在线观看真人 | 国产欧美丝袜在线二区 | 一本大道香蕉中文在线视频 | 亚洲综合激情五月丁香六月 | 国产亚洲精品九九久在线观看 | 亚洲熟女综合一区二区三区 | 成欢阁免费入口在线观看 | 自拍偷拍亚洲 | 日本x片成年免费观看视频 娇小xxxxx性 | 不卡高清在线一区二区三 | 欧美日韩一级视频 | 在线观看精品国产福利片87 | 国产激情中文在线 | 亚洲欧美国产日韩精 | 日韩精品视频精品一区二区 | 久精品视在线观看视频99 | 国产精成人品日日拍夜夜免费 | 国产在线观看免费a∨ | 国产精品亚洲二区在线播放 | 国产精品性爱不卡在线观看 | 91精品专区国产盗摄 | 日本三级网址 | 国产九一在线视频 | 亚洲精品一二三四区 | 欧美亚洲日本国产黑白配 污污网站在线观看免费 | 国产日韩一区美利坚 | 国产69精品| 国产揄拍视频在线观看 | 国产精品美乳在线观看 | 亚洲熟女 | 欧美亚洲国产精品第 | 大地资源影视 | 欧亚尺码专线欧洲b1b1 | www.性爱.com | 国产午夜福利不卡在线观看 | 国产精品无需播放器 | 电影在线观看 | 国产精品免费视频观看拍拍 | 国产一区亚洲一区 | 精品免费国产一区二区三区 | 传媒mv在线观看视频 | 国产一级成人免费大片 | 草莓国产手机在线视频 | 亚洲老妈激情一区二区三区 | 三级在线电影 | 天堂а√中文在线官网 | 国产免费一区二区三区香蕉精 | 911国产在 | 国产免费一区2区3区4区 | 色橹橹欧美在线观看视频高 | 欧美日韩在线亚洲一区二区三区 | 88影视网免费的电视剧大全 | 新不夜城综合另类 | 国产无内肉丝精品视频 | 99热精品免费| 极品一二三视频 | 国产精品我不卡在线观看 | 国产好看网站 | 欧美阿v高 | 精品国产一区二区三区四区特色 | 国产综合欧美日韩视频一区 | 国产精品播 | 国产99在线播放免 | 野花韩国| 国产精品欧美亚洲制服 | 精品国产手机自在线观 | 国产肥熟女一区二区三区 | 噼里啪啦的视频免费观看 | 亚洲高清aⅴ日本欧美视频 亚洲色一色噜一噜噜噜人与 | aⅴ日本亚洲欧洲免费 | 4399国语在线观看视频 | 欧美熟女乱轮综合图区 | 亚洲一区二区三区不卡在线播放 | 日本三级香港 | 欧美日韩高清片在线观看 | 国产精品日韩在线观看一区二区 | 欧美日韩一区二区三区视频在 | 绝色影视在线观看免费版电视剧 | 欧美精品在线观看 | 国产又粗又猛又大爽视频 | 欧美一级无毛视频 | 国产免费一级高清淫日本片 | 色偷偷亚洲女人天堂观看欧 | 免费高清欧美一区二区三区 | 亚洲精品国产精品精 | 亚洲国产人成在线观看 | 成人性生交大 | 国产又粗又猛又爽又黄的视频 | 国产真实乱对白精彩 | wwww黄免| 性一交一乱一伦一 | 欧美色中文字幕第一页 | 白洁被五个人玩一夜 | 国产欧美日韩第一区在线 | 美女被男人桶到爽免费网站 | 丝袜美腿视频区一区二区三 | 欧洲美熟女乱又 | 欧美日韩一级国产 | 精品亚洲永久免费精品app | 成人免费福利片 | 国产亚洲人成在线播放 | 欧美日韩精品在线二区 | 国产一级精品视频 | 日韩综合一卡二卡三卡死四卡 | 99热只有这里有99精品 | 国产乱子伦视频在线观看 | 国产福利一区二区 | 日韩视频免播放在线观看 | 国产一区二区三区在线观看视频 | 欧美一级a视频免费放新闻 欧美午夜一区二区之蜜桃 门卫老头吮她 | 日韩欧美三区 | 粗又视频图片 | 欧美系列国产系列一二三四 | 中文字幕高清有码在线中字 | 日本乱伦自拍欧美 | 亚洲欧美色一区二区三区 | 日韩视频一区二区在线观看 | 国产午夜亚洲精品不卡在线观看 | 亚洲国产欧美国产综合一区 | 字幕无乱码 | 亚洲欧美大片在线观看 | 欧美国产精品三级a三级三级 | 在线观看国产 | 欧美日韩深夜视频在线观看 | 一区二区免费高清在线观看国产 | 亚洲伊人精品国产91综合 | 欧美高清一区二区三区不卡视频 | 午夜性刺激| 在线亚洲日韩欧美一区二区 | 欧美一级www片免费观看 | 欧美+日韩+国产在线 | 国产一级视频 | 99精品免费视频在线观看 | 婷婷亚洲久悠 | 国产午夜福利片在线播放老 | 国产揄拍视频在线观看 | 欧美在线免费看 | 欧美一区二区三区视频 | 成片在线看一区二区草莓 | 国产一区二区三区乱码网站 | 精品无人乱码区1区2区3区 | 国产足控脚交在线观看 | 1000部夫妻午夜免费 | 精品国产香蕉在线播出 | 免费高清视频一区二区 | 免费在线观看电视剧大全 | 日本精品a在线观看 | 成午夜福利人试看120秒 | 国产自拍后入在线观看 | 国产欧美日韩主播 | 精品网站不卡 | 亚洲综合另类小说色六月 | 亚洲欧美日韩综合 | 精品第一区视频二区 | 午夜福利在线播放欧美 | 国内精品视频在线 | 国产视觉 | 日韩欧美另类综合一区 | 日本三级带黄在线观看 | 女人窝人体色www在线观看 | 欧美高清性 | 污污污污污免费网站在线观看 | 亚洲精品在线观看视频 | 欧美一区二区三区日韩免费播 | 成熟熟女国产精品一区二区 | 国产精品日韩欧美在线第一页 | 一个人看的免费高清www视频 | 欧美日韩一区二区三区高清在线 | 国产a∨天天免费观看美女 欧亚成人 | 日本在线免 | 亚洲视频在线观看免费 | 日本欧美一区二区三区片 | 男人j放进女人p全黄在线 | 欧美系列国产系列一二三四 | 日本欧美视频在线观看三区 | 日韩国产亚洲 |