【问题标题】:Get values of Label - LinkButton - session获取 Label - LinkBut​​ton - session 的值
【发布时间】:2014-06-13 02:09:32
【问题描述】:

我在我的产品列表视图中添加了一个赞按钮,并且赞按钮假设获取广告标题和 Adsid 的值以及单击此赞 btn 的用户 ID,然后代码应将此添加存储在收藏夹表中它在代码中提到,但我有一个问题,因为我仍然在 c# 中比较大,我不知道如何修复它请你帮忙(修复下面的代码因为我收到错误消息:

“错误3当前上下文中不存在名称'Adstitlinkbtn'

错误 2 当前上下文中不存在名称“Labeladsid””

如果您向用户添加一条消息,如果他没有登录并且他点击likebtn 将收到一条消息“请登录以将此广告添加到您的收藏列表”,我将不胜感激。

你可以找到这个可以解释我的意思的屏幕记录

screen record

非常感谢大家

 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" />
            &nbsp;-
            <asp:Label ID="StateLabel" runat="server" Text='<%# Eval("State") %>' 
                    style="font-family: Arial, Helvetica, sans-serif; font-size: small" />
            &nbsp;-
            <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" />
                &nbsp;&nbsp;&nbsp;
                <asp:ImageButton ID="Sndmailtoadder" runat="server" 
                   ImageUrl="~/iconsimg/mailposter.png" OnClick="Sndmailtoadder_Click" />
                &nbsp;&nbsp;&nbsp;

                </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>

【问题讨论】:

  • 至少补充一下你的问题...
  • @Gusman 感谢您的回复,我已经更新了我的帖子,希望能对我的问题提供更多解释
  • 我看了你的视频,很奇怪智能感知说控件不存在。尝试清理解决方案并重新编译,如果失败,请删除控件(labelsid 和 Adstitlinkbtn)并使用另一个名称再次添加它们,如果它有效,则重命名为正确的名称,它应该可以工作。我认为这是一个 IDE 错误。

标签: c# asp.net session label asplinkbutton


【解决方案1】:

创建一个 bool 值来表示用户是否已登录(称为 bool loggedIn)。无论您的代码在哪里登录(您没有发布此代码),将该布尔值设置为 true。然后,当用户单击“like”按钮时,在您的“likebtn_Click”方法中,检查布尔值:

if(!loggedIn)
{
 MessageBox.Show("Please login to add this ads to your favorite list");
 return;
 }

【讨论】:

  • 谢谢@TheBlindSpring 但是我需要一些代码来帮助我修复它并将值存储在表中请检查我在我的帖子上的更新非常感谢你
【解决方案2】:

我相信您没有向我们展示您的所有标记。您似乎在网格视图或其他一些集合控件中。在这些控件中,模板布局是为每个项目动态生成的。因此,您的标签和链接按钮控件实际上并不存在。您需要做的是创建一个 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 事件,并从 imagebutton 中删除了您的 OnClick 事件。我不能 100% 确定是否要删除 OnClick 事件,因此请您确认 OnCommand 事件正确触发,同时从 ImageButton 中删除了 OnClick。

【讨论】:

  • 感谢您的回复,但html代码中没有更多内容,只有列表视图和页面的页眉和页脚
  • 我还附上了 sqlconnectionstring 希望可以帮助找到解决方案
  • 在您的 youtube 视频中,我看到了一个 标签。你在什么控制之下?请发布整个标记。
  • 正如我所说,您不理解 ListView 在您的模板中为每个数据绑定项创建每个控件。这意味着您的 ItemTemplate 中每个项目的 ID 在运行时都有不同的 ID,这就是为什么您不能在编译时引用它们的原因。我注意到你给你的一个按钮一个命令名称,这就是你需要把你的代码隐藏的地方。我没有在运行时对此进行测试,很抱歉我没有时间为您创建测试解决方案,但是我更新的答案应该会有所帮助。
猜你喜欢
  • 2016-08-17
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多