使用GridView1.DataBind();
和AutoGenerateColumns="true"
如何查找特定列,而不是URL显示该网址中图片的缩略图?
GridView是由SQL Query生成的,可能会返回2到10列(其中一列可能是图像URL)。
对于缩略图我相信可以使用image.GetThumbnailImage()
,但在这种情况下可以在哪里使用它?
生成SQL查询:
if (CheckBoxUser.Checked) search_fields += "UserName";
if (CheckBoxDate.Checked) search_fields += ",EventDate";
...
if (CheckBoxImageUrl.Checked) search_fields += ",ImageUrl";
SqlConnection conn = new SqlConnection(connectionString);
string select = "SELECT " + search_fields + " FROM TableName";
SqlDataAdapter DataCommand = new SqlDataAdapter(select, conn);
DataCommand.Fill(ds);
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
GridView1很简单:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True">
<HeaderStyle CssClass="header_grid" />
</asp:GridView>
由于我们不知道用户想要浏览多少列,因此没有手动声明列。但是如果他标记“ImageUrl”列而不是网络文件路径(\ somePc \ path \ file.jpg),他需要在GridView中看到此图像的缩略图。
答案 0 :(得分:1)
如果您知道数据源的类型以及包含图片网址的列的名称,您可以使用RowDataBound事件,如下所示:
注意:这只有在您不使用其他模板化列时才有效。
gridView1.RowDataBound += new GridViewRowEventHandler(gridView1_RowDataBound);
...
void gridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataView dataSource = (DataView)gridView1.DataSource;
DataColumn imageUrlColumn = dataSource.Table.Columns["ImageUrl"];
if (imageUrlColumn != null)
{
int index = imageUrlColumn.Ordinal;
DataControlFieldCell cell = (DataControlFieldCell)e.Row.Controls[index];
string imageUrl = cell.Text;
cell.Text = GenerateThumbnailUrl(imageUrl);
}
}
}