<asp:DataGrid ID="type1" ....
  <Columns >
  <asp:TemplateColumn HeaderText="类别" ItemStyle-Width="20">
<ItemTemplate>
<asp:Image ID="showpic" ImageUrl="" ImageAlign ="Middle"/>
</ItemTemplate>
  </asp:TemplateColumn>我想根据不同的传递过来的id,这里显示不同的图片。不知道如何编码,在此求教,谢谢!void Page_Load()
{
string ftype=Request.QueryString["type"];
string ImageUrl;
switch (ftype)
{
case "1":
showpic.TmageUrl="images/chuzu.gif"; break;这样不好用。。

解决方案 »

  1.   

    这个应该在绑定的时候做了
    ItemDataBound事件。用 e.Item.FindControl("showpic") 找到相应的image控件,然后根据绑定的其他值改变ImageUrl
      

  2.   

    楼上正解,就是用反射!
    Image Image1=(Image)e.Item.FindControl("showpic");
      

  3.   

    根据两位的说话,找到了image控件,可是如何修改呢?小弟学.net刚刚5天。。
    switch (ftype)
    {
    case "1":
    Image Image1=(Image)e.Item.FindControl("showpic");
    Image1.ImageUrl="images/chuzu.gif";不成
      

  4.   

    <asp:TemplateColumn HeaderText="类别" ItemStyle-Width="20">
    <ItemTemplate>
    <asp:Image ID="showpic" ImageUrl='<%# Format(Container.DataItem,"showpic") %>' ImageAlign ="Middle"/>
    </ItemTemplate>
    </asp:TemplateColumn>---------------后台写这个方法就可以了,不用在pageload中调
    protected string Format(object item,string type)
    {
    DataRowView drv=(DataRowView)item;
    string val=string.Empty;
    switch (type.ToLower())
    {
    case "1":
    val="images/1.gif";
    break;
    case "2":
    val="images/2.gif";
    break;
    case "3":
    val="images/3.gif";
    break;
    }
    return val;
    }
      

  5.   

    主要是你的 <asp:Image ID="showpic" ImageUrl="" ImageAlign ="Middle"/> 没有
    Runat="Server"