#region //'Revision: 1.00 Created Date: 2013/08/02 Created ID: Una [#1300071]增加多選框
/// <summary>
/// Session獲取多選框值
/// </summary>
private void RememberOldValues()
{
ArrayList categoryIDList = new ArrayList();
string index = "";
foreach (GridViewRow row in gridView.Rows)
{
index = (string)gridView.DataKeys[row.RowIndex].Value;
bool result = ((CheckBox)row.FindControl("DeleteThis")).Checked;
// Check in the Session
if (Session["id"] != null)
categoryIDList = (ArrayList)Session["id"];
if (result)
{
if (!categoryIDList.Contains(index))
categoryIDList.Add(index);
}
else
categoryIDList.Remove(index);
}
if (categoryIDList != null && categoryIDList.Count > 0)
Session["id"] = categoryIDList;
}
/// <summary>
/// Session分頁時之前多選框為true
/// </summary>
private void RePopulateValues()
{
ArrayList categoryIDList = (ArrayList)Session["id"];
if (categoryIDList != null && categoryIDList.Count > 0)
{
foreach (GridViewRow row in gridView.Rows)
{
string index = (string)gridView.DataKeys[row.RowIndex].Value;
if (categoryIDList.Contains(index))
{
CheckBox myCheckBox = (CheckBox)row.FindControl("DeleteThis");
myCheckBox.Checked = true;
}
}
}
}
#endregion
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
RememberOldValues();
gridView.PageIndex = e.NewPageIndex;
BindData();
RePopulateValues();
}
protected void btnSelect_Click(object sender, EventArgs e)
{
string items = "";
ArrayList categoryIDList = new ArrayList();
string index ="";
foreach (GridViewRow row in gridView.Rows)
{
index = (string)gridView.DataKeys[row.RowIndex].Value;
bool result = ((CheckBox)row.FindControl("DeleteThis")).Checked;
// Check in the Session
if (Session["id"] != null)
categoryIDList = (ArrayList)Session["id"];
if (result)
{
if (!categoryIDList.Contains(index))
categoryIDList.Add(index);
}
else
categoryIDList.Remove(index);
}
if (categoryIDList != null && categoryIDList.Count > 0)
for (int i = 0; i < categoryIDList.Count; i++)
{
items += categoryIDList[i] + ",";
}
items = items.Substring(0, items.Length - 1);
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "check('" + items + "');", true);
Session.Remove("id");
}
在vs中我们可以直接用表达式。数值型比较直接用操作符即可。
如i==2,i<2;
但是字符型比较呢?
加入我们有一个名为string的变量,定义如下:
char *string="Two";
设置断点:
当我们运行上述代码时,会发现即使string的内容”Two”时,运行并没有中断。这是因为==运算符比较的是两个字符串的地址而不是内容,因此上述断点并不能满足我们的需求。(字符串名就是地址)
Visual Studio考虑到程序员经常会根据字符串的内容添加断点,因此在添加断点这个功能上为字符串做了特殊的支持。我们在根据字符串内容添加断点时,可以使用strcmp等函数来设置断点。
于是在上述示例中,我们可以用strcmp函数来添加如下断点:
Visual Studio中的添加断点功能中支持的字符串函数有:
strlen, wcslen, strnlen, wcsnlen, strcmp, wcscmp, _stricmp,_wcsicmp, strncmp, wcsncmp, _strnicmp, _wcsnicmp, strchr, wcschr, strstr, wcsstr
抓取新浪网的新闻栏目,如图所示:
使用 谷歌浏览器的查看源代码: 通过分析得知,我们所要找的内容在以下两个标签之间:
<!-- publish_helper name='要闻-新闻' p_id='1' t_id='850' d_id='1' -->
内容。。。。
<!-- publish_helper name='要闻-财经' p_id='30' t_id='98' d_id='1' -->
如图所示:
内容。。。。
使用VS建立一个如图所示的网站:
我们下载网络数据主要通过 WebClient 类来实现。
使用下面源代码获取我们选择的内容:
protected void Enter_Click(object sender, EventArgs e)
{
WebClient we = new WebClient(); //主要使用WebClient类
byte[] myDataBuffer;
myDataBuffer = we.DownloadData(txtURL.Text); //该方法返回的是 字节数组,所以需要定义一个byte[]
string download = Encoding.Default.GetString(myDataBuffer); //对下载的数据进行编码
//通过查询源代码,获取某两个值之间的新闻内容
int startIndex = download.IndexOf("<!-- publish_helper name='要闻-新闻' p_id='1' t_id='850' d_id='1' -->");
int endIndex = download.IndexOf("<!-- publish_helper name='要闻-财经' p_id='30' t_id='98' d_id='1' -->");
string temp = download.Substring(startIndex, endIndex - startIndex + 1); //截取新闻内容
lblMessage.Text = temp;//显示所截取的新闻内容
}
效果如图:
最后: 除了把下载的数据保存为文本以外,还可以保存为 文件类型 和 流 类型。
WebClient wc = new WebClient();
wc.DownloadFile(TextBox1.Text, @"F:\test.txt");
Label1.Text = "文件下载完成";
WebClient wc = new WebClient();
Stream s = wc.OpenRead(TextBox1.Text);
StreamReader sr = new StreamReader(s);
Label1.Text = sr.ReadToEnd();