0

我的代码中发生了一些奇怪的事情,实际上我有一个将查询字符串中的 ID 值传递到第二页的超链接。在第二页中,我有 2 个 sql 数据源,这两个 sql 数据源都应该获取这个 id 值并将其传递给过滤器参数在数据列表中显示某事。

所以换句话说,我有一个第一页,它有一个从数据源读取的超链接 ID 值并将其传递给第二页。它如下所示:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/forumpage.aspx?ID="+Eval("ID")%>'><%#Eval("title")%> </asp:HyperLink>

然后在第二页中,我有一个带有这样的查询的 sql 数据源...其中 ID=@id 并从 db.it 的查询字符串中获取此 id 效果很好。但我对第二页中的第二个 sql 数据源有问题,它有一个如下查询:...forms.question_id=@id 然后在 sql 中引用查询字符串作为 ID 由超链接的第一页获取。但是当我单击插入按钮时,会显示 fk 错误。

错误:错误:INSERT 语句与 FOREIGN KEY 约束“FK_forumreply_forumquestions”冲突。冲突发生在数据库“论坛”、表“dbo.forumquestions”、列“ID”中。该语句已终止。

我的桌子

  1. (问题(ID,user_id(fk),Cat_id(fk),标题,正文)
  2. (回复(ID,userr_id(fk),questionn_id(fk),titlereply,bodytestreply);

当手动输入 cb 时,我在 questionn_id 中给出了一个数字,例如 1,它显示我成功,但是当它想通过数据源从过滤器中读取时,该字段面临问题。

plzzzz帮助我真的需要跳过这部分。因为我是新手,我想我无法清楚地理解逻辑方式。

<asp:SqlDataSource ID="sdsreply" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:forumConnectionString %>" 
                    SelectCommand="SELECT forumreply.ID, forumreply.userr_id, forumreply.questionn_id, forumreply.bodytextreply, forumreply.datetimereply, forumquestions.ID AS Expr1, forumusers.ID AS Expr2, forumusers.username FROM forumquestions INNER JOIN forumreply ON forumquestions.ID = forumreply.questionn_id INNER JOIN forumusers ON forumquestions.user_id = forumusers.ID AND forumreply.userr_id = forumusers.ID where forumreply.questionn_id=@questionn_id">
                    <SelectParameters>
                        <asp:QueryStringParameter Name="questionn_id" QueryStringField="ID" />
                    </SelectParameters>
                </asp:SqlDataSource>

它是插入按钮中第二页的 cb:

    {
        if (Session["userid"] != null)
        {

            lblreply.Text = Session["userid"].ToString();
        }
        else
        {
            Session["userid"]=null;

        }

        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {

            lblshow.Text = string.Empty;


                string d = HttpContext.Current.User.Identity.Name;
                lblshow.Text =d + "عزیز خوش آمدید." ;

                foreach (DataListItem item in DataList2.Items)
                {
                    Label questionn_idLabel = (Label)item.FindControl("questionn_idLabel");
                    Label userr_idLabel = (Label)item.FindControl("userr_idLabel");
                    lbltest.Text = string.Empty;
                    lbltest.Text = questionn_idLabel.Text;
                    lblreply.Text = string.Empty;
                    lblreply.Text = userr_idLabel.Text;

                }


        }
        else
        {
            lblshow.Text = "اگر بار اول هست که می خواهید پاسخ دهید لطفا ابتدا  ثبت نام و سپس لاگین فرمائید.";
        }
    }



    {
        if(HttpContext.Current.User.Identity.IsAuthenticated)
        {
            if (Page.IsValid)
            {





                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString"].ConnectionString);
                try
                {
                    con.Open();


                    SqlCommand cmd = new SqlCommand("insert into forumreply    (userr_id,questionn_id,bodytextreply,datetimereply)values(@userr_id,@questionn_id,@bodytextreply,@datetimereply)", con);

                    cmd.Parameters.AddWithValue("userr_id",lblreply.Text);
                    cmd.Parameters.AddWithValue("questionn_id",lbltest.Text);
                    cmd.Parameters.AddWithValue("bodytextreply",txtbody.Text);
                    cmd.Parameters.AddWithValue("datetimereply",DateTime.Now );
                    cmd.ExecuteNonQuery();


                }
                catch (Exception exp)
                {
                    Response.Write("<b>Error:</b>");
                    Response.Write(exp.Message);
                }
                finally
                {
                    con.Close();
                }







                lblmsg.Text = "پیام شما با موفقیت ثبت گردید.thx";
                lblshow.Visible = false;

                //lbltxt.Text = txtbody.Text;
                txtbody.Text = string.Empty;

            }





        }
        else 
        {
            lblmsg.Text = string.Empty;
            Session["rem"] = Request.UrlReferrer.AbsoluteUri;
            Response.Redirect("~/login.aspx");



        }

    }
4

0 回答 0