我在我的产品列表视图中添加了一个类似按钮,而类似按钮假设获取广告标题和Adsid的值以及点击此按钮的用户ID,如btn然后代码应将此添加内容存储在收藏夹表格中它在代码中提到,但我有一个问题,因为我仍然在c#中更大,我不知道如何解决它可以请你帮忙(修复下面的代码因为我得到错误消息:
"错误3名称' Adstitlinkbtn'在当前上下文中不存在
错误2名称' Labeladsid'在当前上下文中不存在"
并且如果你向用户添加一条消息,如果他没有登录并且他点击了likebtn将会收到一条消息,那么我将感激不尽。请登录以将此广告添加到您喜欢的列表中#34;。
你可以找到这个可以解释我的意思的屏幕记录
非常感谢你们所有人
protected void likebtn_Click(object sender, ImageClickEventArgs e)
{
SqlConnection likecn = new SqlConnection(cs);
SqlCommand likecmd = new SqlCommand();
string sqlstatment = "INSERT INTO favourite (AdsID, UID, AdsTit) VALUES (@AdsID,@UID,@AdsTit)";
likecmd.Connection = likecn;
likecmd.CommandType = CommandType.Text;
likecmd.CommandText = sqlstatment;
//Insert the parameters first
likecmd.Parameters.AddWithValue("@AdsID", Labeladsid);
likecmd.Parameters.AddWithValue("@UID", Session["UsrNme"]);
likecmd.Parameters.AddWithValue("@AdsTit", Adstitlinkbtn.Text);
SqlDataAdapter ad = new SqlDataAdapter(likecmd);
DataSet ds = new DataSet();
ad.SelectCommand = likecmd;
ad.Fill(ds);
Response.Write("This Ads has been added to your Fovarite List");
}
<asp:ListView ID="adsshow" runat="server" DataSourceID="locationdatalistshow"
style="text-align: left" >
<ItemTemplate>
<div class="templist">
<asp:Label ID="Labeladsid" runat="server" Text='<%# Eval("AdsID") %>' style="color: #ffffff"></asp:Label>
<asp:ImageButton ID="ImageButton3" runat="server" Height="88px" Width="91px"
CssClass="imag1" ImageUrl='<%# "/images/AdsImgs/" + Eval("Img1") %>'
PostBackUrl='<%# "AdsDetails.aspx?Img1=" + Eval("AdsID") %>' />
<asp:LinkButton ID="Adstitlinkbtn" runat="server"
style="font-weight: 700; color: #0066FF" Text='<%# Eval("AdsTit") %>'
CssClass="adstit" onclick="Adstitlinkbtn_Click"
PostBackUrl='<%# "AdsDetails.aspx?AdsTit=" + Eval("AdsID") %>' ></asp:LinkButton>
<br />
<asp:Label ID="AdsDescLabel" runat="server" Text='<%# Eval("AdsDesc") %>'
CssClass="adsdisc" />
<br /><br />
<br /><br />
<asp:Label ID="CountryLabel" runat="server" Text='<%# Eval("Country") %>'
style="font-family: Arial, Helvetica, sans-serif; font-size: small" />
-
<asp:Label ID="StateLabel" runat="server" Text='<%# Eval("State") %>'
style="font-family: Arial, Helvetica, sans-serif; font-size: small" />
-
<asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>'
style="font-size: small; font-family: Arial, Helvetica, sans-serif" />
<div class="adsprice">Price:
<asp:Label ID="AdsPriceLabel" runat="server" style="color: #FF0000"
Text='<%# Eval("AdsPrice") %>' /></div>
<br />
<div class="iconadsbox">
<asp:ImageButton ID="likebtn" runat="server"
ImageUrl="~/iconsimg/favoritestar2.png" OnClick="likebtn_Click" CommandName="like" />
<asp:ImageButton ID="Sndmailtoadder" runat="server"
ImageUrl="~/iconsimg/mailposter.png" OnClick="Sndmailtoadder_Click" />
</div>
<asp:Image ID="Image1" runat="server" CssClass="divideline"/>
</div>
</ItemTemplate>
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="adsshow" PageSize="7">
<Fields>
<asp:NumericPagerField />
<asp:NextPreviousPagerField />
</Fields>
</asp:DataPager>
<br />
</div>
</LayoutTemplate>
</asp:ListView>
答案 0 :(得分:0)
创建一个bool值来表示用户是否已登录(称之为bool loggedIn)。无论您的代码在何处登录(您没有发布此代码),请将该bool设置为true。然后当用户点击“喜欢”按钮时,在你的'likebtn_Click'方法中,检查bool:
if(!loggedIn)
{
MessageBox.Show("Please login to add this ads to your favorite list");
return;
}
答案 1 :(得分:0)
我相信你没有向我们展示你所有的标记。看起来你在网格视图或其他一些集合控件中。在这些控件中,为每个项目动态生成模板布局。因此,您的标签和链接按钮控件确实不存在。您需要做的是创建一个GridView_Command事件,在该代码中您将可以访问该项目中的控件。
所以基本上你创建了一个模板项,这些控件是在运行时动态生成的,这就是为什么它们在设计时不可用。如果您将剩下的标记发布给我,或者其他任何想要的人可以为您提供更具体的帮助。
protected void adsshow_ItemCommand(object sender, ListViewCommandEventArgs e)
{
if (e.CommandName == "like")
{
var lblAds = e.Item.FindControl("Labeladsid") as Label;
var lbtn = e.Item.FindControl("Adstitlinkbtn") as LinkButton;
var id = lblAds.Text;
var title = lbtn.Text;
}
}
<asp:ListView ID="adsshow" runat="server" DataSourceID="locationdatalistshow"
style="text-align: left" onitemcommand="adsshow_ItemCommand" >
<ItemTemplate>
...
<asp:ImageButton ID="likebtn" runat="server"
ImageUrl="~/iconsimg/favoritestar2.png" CommandName="like" />
...
注意到我向ListView添加了一个onCommand事件,我从图像按钮中删除了你的OnClick事件。我不是100%确定删除OnClick事件,所以如果你可以请我确认OnCommand事件正确触发,从ImageButton中删除了OnClick。