如何访问GridView中放置在ItemTemplate中的图像控件的ImageUrl属性
本文关键字:ItemTemplate 图像 属性 ImageUrl 控件 何访问 访问 GridView | 更新日期: 2023-09-27 18:08:05
My GridView Markup:
<asp:GridView ID="GrdVw" visible="False" runat="server" AllowPaging="True"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Title" HeaderText="Title" />
<asp:BoundField DataFi
eld="Comment" HeaderText="Comment" />
<asp:TemplateField HeaderText="Review Document">
<ItemTemplate>
<asp:Image ID="currentDocFile" runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:FileUpload ID="reviewDoc_UpldFl" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
我从Page_Load和取消/更新等后调用的绑定方法:
private void BindGrdVw()
{
List<ArticleComments> commentsList = ArticleCommentsBLL.GetComments(ArticleID);
if (cruiseReviewsList.Count != 0)
{
GrdVw.DataSource = commentsList;
GrdVw.DataKeyNames = new string[] { "ID" };
GrdVw.DataBind();
GrdVw.Visible = true;
}
}
. .现在,正如您所看到的,我有一个模板字段,我通过我正在编辑的行的'FindControl()'访问EditTemplate中的'FileUpload'控件。但是我怎么能访问'Image'控件的属性'ImageUrl'呢?
我需要将其设置为以下内容,这是代码后面文件中另一个项目的示例代码,但我能够直接访问图像。
currentProfilePic_Img.ImageUrl = ConfigurationManager.AppSettings["cruisesPpUploadPath"].ToString() + currentCruise.ProfilePic;
* AppSettings返回我用来上传的文件夹的路径。
*currentCruise是一个对象,它的属性是通过我的DAL层分配的。
我想我明白你的意思了…
如果你想动态绑定图像控件URL,你必须钩到GridView的RowDataBound事件。
<asp:GridView ID="GrdVw" visible="False" runat="server" AllowPaging="True"
AutoGenerateColumns="False" OnRowDataBound="GrdVwDataBound">
protected virtual void GrdVwDataBound(GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var imageControl = e.Row.FindControl("currentDocFile") as Image;
imageControl.ImageUrl = // Image URL here
}
}
希望这对你有帮助!
更多信息在这里:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdatabound.aspx如果你想从一开始就把图片设置为右:
protected void Page_Load(object sender, EventArgs e)
{
GrdVw.RowDataBound += new GridViewRowEventHandler(GrdVw_RowDataBound);
}
void GrdVw_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
Image rowImage = (Image) e.Row.FindControl("currentDocFile");
rowImage.ImageUrl = whatever;
}
}