首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# asp.net在gridview中单击按钮时,如何更改按钮的图像url (类型为图像)

问c# asp.net在gridview中单击按钮时,如何更改按钮的图像url (类型为图像)
EN

Stack Overflow用户
提问于 2012-04-06 18:27:31
回答 4查看 8.1K关注 0票数 0

我创建了一个网格视图,它有收藏按钮,当我点击它时,我想要更改它的url。我该怎么做呢?

代码语言:javascript
复制
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1" Width="446px" AllowPaging="True" 
            onrowcommand="GridView1_RowCommand1" 
            onselectedindexchanged="GridView1_SelectedIndexChanged">
                <Columns>
                    <asp:ImageField AlternateText="Add To Favorites" Visible=false 
                        DataImageUrlFormatString="&quot;~/images/favorites.png&quot;" 
                        FooterText="Add To Favorites" HeaderText="Add To Favorites">
                        <FooterStyle Width="10px" />
                    </asp:ImageField>
                    <asp:ButtonField CommandName="AddComment" ButtonType="Image" HeaderText="Comment" ImageUrl="~/images/commentt.png" Text="Comment" ItemStyle-HorizontalAlign="Center" >
                     <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </asp:ButtonField>
                    <asp:ButtonField CommandName="Share"  ButtonType="Image" HeaderText="Share with Friends" ImageUrl="~/images/openshare.png" ItemStyle-HorizontalAlign="Center" Text="Share" >
                    <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </asp:ButtonField>
                     <asp:ButtonField CommandName="ShareGroups"  ButtonType="Image" HeaderText="Share with Groups"   ImageUrl="~/images/openshare.png" ItemStyle-HorizontalAlign="Center" Text="Share" >
                    <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </asp:ButtonField>
                  <asp:ButtonField ButtonType="Image" HeaderText="Favorites" 
                        ImageUrl="~/images/StarEmpty.png" CommandName="Favorite" 
                        Text="Add to Favorites" ItemStyle-HorizontalAlign="Center">
                    <FooterStyle Height="20px" />
                    <HeaderStyle Width="3px" />
                    <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </asp:ButtonField>
                    <asp:ButtonField  ButtonType="Image"  CommandName="Mail" HeaderText="Send Mail" 
                        ImageUrl="~/images/email-icon.png.jpg" Text="Send Mail" 
                        ItemStyle-HorizontalAlign="Center" InsertVisible="False" >

                            <ItemStyle HorizontalAlign="Center"></ItemStyle>

                    </asp:ButtonField>
                    <asp:ButtonField CommandName="View" Text="View Rss" 
                        HeaderText="View Rss" ItemStyle-HorizontalAlign="Center" >
                    <HeaderStyle Width="50px" />
                    <ItemStyle Width="15px" />

                    </asp:ButtonField>
                     <asp:BoundField DataField="RSS_Title" HeaderText="RSS_Title"
                        SortExpression="RSS_Title" />
                   <asp:TemplateField>
            <ItemTemplate>
                <asp:HiddenField ID="HiddenField1" runat="server" 
                    Value='<%#Eval("RSS_ID")%>'/>

            </ItemTemplate>

            </asp:TemplateField>
                </Columns>
            </asp:GridView>

我的c#代码如下

代码语言:javascript
复制
  if (e.CommandName == "Favorite")
        {
           //GridView1.Rows[rowIndex].Cells[2].

            string sValue = ((HiddenField)GridView1.Rows[rowIndex].FindControl("HiddenField1")).Value;
            int id = Convert.ToInt32(sValue);
            Session["SelectedRSS"] = sValue;

            DBConnection db = new DBConnection();
            bool res = db.CheckFavorites(id, User_Name);

            // if favorite rss  doesnot exist
            if (!res)
            {
                Boolean result = db.addFavorite(id, User_Name);

        DataSet selectedRSS = db.getRSS(id);
        DataTable dt = selectedRSS.Tables[0];
        DataRow row = null;

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            row = dt.Rows[i];
            countOfFavorite = Convert.ToInt32(row[3].ToString());

        }
        countOfFavorite++;

                Boolean result1 = db.increaseFavoriteCount(id, countOfFavorite);

                // rssi favori olarak user dosyasına kaydet;


            }


        }           
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-06 18:51:23

首先,为Favorite按钮字段分配一个ID(在我的例子中是favBtn),如下所示:

代码语言:javascript
复制
asp:ButtonField ID="favBtn" ButtonType="Image" HeaderText="Favorites" 
                    ImageUrl="~/images/StarEmpty.png" CommandName="Favorite" 
                    Text="Add to Favorites" ItemStyle-HorizontalAlign="Center">

if (e.CommandName == "Favorite")
{
    // ...
    // Code Updated here
    int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow row = GridView1.Rows[index];
    ImageButton ib = (ImageButton)row.Controls[0].Controls[0];
    ib.ImageUrl = "~/images/something.png"; // change to your new image

    // ...
}

它应该可以工作,但不能保证。:)

票数 2
EN

Stack Overflow用户

发布于 2012-04-06 18:34:46

您是否尝试过在onclick事件中设置src属性?

代码语言:javascript
复制
onclick="this.src = 'http://mysite.com/images/differentimage.jpg'"

在服务器端代码中,您可以这样做:

代码语言:javascript
复制
myImageButton.ClientClick = "this.src = '" + ResolveUrl("~/images/someotherimage.jpg") + "';";

在服务器端HTML标记中,您可以执行以下操作:

代码语言:javascript
复制
<asp:Button OnClientClick="this.src='http://mysite.com/images/someotherimage.jpg" />
票数 0
EN

Stack Overflow用户

发布于 2012-04-06 19:09:16

修改您最喜欢的列,如下所示

代码语言:javascript
复制
<asp:ButtonField ButtonType="Image" HeaderText="Favorites" ImageUrl='<%# GetCorrectImg(Convert.ToBoolean(Eval("IsFavirated"))) %>'
            CommandName="Favorite" Text="Add to Favorites" ItemStyle-HorizontalAlign="Center">
            <FooterStyle Height="20px" />
            <HeaderStyle Width="3px" />
            <ItemStyle HorizontalAlign="Center"></ItemStyle>
        </asp:ButtonField>

在此函数中,GetCorrectImg(IsFavirated) u可以设置值,通过这些值,u可以设置需要设置哪个图像的逻辑。在你的代码中定义下面的函数

代码语言:javascript
复制
public string GetActiveInactiveImg(Boolean IsFavirated)
    {
        string retVal = "~/images/buttons/StarEmpty.png";


        if (IsFavirated == true)
        {
            retVal = "~/images/buttons/ChangeImage.gif";
        }
    else 
        {
            retVal = "~/images/buttons/StarEmpty.png";
        }


        return retVal;
    }

一旦触发了ItemCommand事件,就再次绑定网格。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10042252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档