我创建了一个网格视图,它有收藏按钮,当我点击它时,我想要更改它的url。我该怎么做呢?
<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=""~/images/favorites.png""
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#代码如下
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;
}
} 发布于 2012-04-06 18:51:23
首先,为Favorite按钮字段分配一个ID(在我的例子中是favBtn),如下所示:
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
// ...
}它应该可以工作,但不能保证。:)
发布于 2012-04-06 18:34:46
您是否尝试过在onclick事件中设置src属性?
onclick="this.src = 'http://mysite.com/images/differentimage.jpg'"在服务器端代码中,您可以这样做:
myImageButton.ClientClick = "this.src = '" + ResolveUrl("~/images/someotherimage.jpg") + "';";在服务器端HTML标记中,您可以执行以下操作:
<asp:Button OnClientClick="this.src='http://mysite.com/images/someotherimage.jpg" />发布于 2012-04-06 19:09:16
修改您最喜欢的列,如下所示
<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可以设置需要设置哪个图像的逻辑。在你的代码中定义下面的函数
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事件,就再次绑定网格。
希望这能有所帮助。
https://stackoverflow.com/questions/10042252
复制相似问题