У меня проблема с ASP и C#. У меня есть форма с двумя раскрывающимися списками, одна показывает тему, а другая показывает подтему, теперь я добавил StoredProcedure, которая проверяет, имеет ли пользователь разрешение на просмотр тема, если она будет добавлена в раскрывающийся список, и она отлично работает, но когда я выбираю тему, она просто возвращается к первому варианту всегда, кто-нибудь знает, что я могу сделать? я читал о Postback из-за привязки ставить я не кажется, чтобы заставить его работать вот мой код ... Ive также попытался использовать sqladapter же вопрос Тхо ....Выпадение появляется пустым после обратной передачи C# asp
хранимая процедура
USE [Forum]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_verutilizadorTopico]
(
@id_user int
)
AS
SELECT UtilizadorTopico.IdTopico, Topico.Id_topico, Topico.Nome FROM UtilizadorTopico INNER JOIN Topico ON UtilizadorTopico.IdTopico = Topico.Id_topico WHERE (UtilizadorTopico.IdUtilizador = @id_user)
RETURN
и мой C# код
using System;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
public partial class About : System.Web.UI.Page
{
string loginid = "";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString2"].ToString());
public void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
topico1();
BindRepeaterData();
BindRepeaterDataPost();
}
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString2"].ToString()); //definição do comando sql
conn.Open();
//Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
//Adicionando o valor das textBox nos parametros do comando
SqlCommand comm = conn.CreateCommand();
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "SP_veruseraposlogin";
comm.Parameters.AddWithValue("@nome", Page.User.Identity.Name);
SqlDataReader rdr = comm.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
loginid = rdr["Id"].ToString();
}
Lblidlog.Text = loginid;
conn.Close();
}
}
public void topico1()
{
SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString2"].ToString()); //definição do comando sql
conn2.Open();
//Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
//Adicionando o valor das textBox nos parametros do comando
SqlCommand comm2 = conn2.CreateCommand();
comm2.CommandType = CommandType.StoredProcedure;
comm2.CommandText = "SP_verutilizadorTopico";
comm2.Parameters.AddWithValue("@id_user", loginid);
SqlDataReader rdrtop = comm2.ExecuteReader();
droptopico.DataSource = rdrtop;
droptopico.DataTextField = "Nome";
droptopico.DataValueField = "Id_topico";
droptopico.DataBind();
rdrtop.Close();
conn2.Close();
}
protected void BindRepeaterData()
{
conn.Open();
SqlCommand cmd = new SqlCommand("select * from Mensagem where id_subtopico = @id_sub Order By data desc", conn);
DataSet ds = new DataSet();
if (dropsub.SelectedValue != "")
{
cmd.Parameters.AddWithValue("@id_sub", this.dropsub.SelectedValue);
}
else
{
cmd.Parameters.AddWithValue("@id_sub", 1);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
RepDetails.DataSource = ds;
RepDetails.DataBind();
conn.Close();
}
protected void DropsubSelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString2"].ToString()); //definição do comando sql
conn2.Open();
SqlCommand comm2 = conn2.CreateCommand();
comm2.CommandType = CommandType.StoredProcedure;
comm2.CommandText = "SP_verutilizadorTopico";
comm2.Parameters.AddWithValue("@id_user", loginid);
comm2.Parameters.AddWithValue("@id_topico", droptopico.SelectedValue);
BindRepeaterData();
BindRepeaterDataPost();
}
protected void BindRepeaterDataPost()
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT Post.*, Ficheiro.Nome FROM Ficheiro INNER JOIN Post ON Ficheiro.IdFicheiro = Post.IdFicheiro where Post.id_subtopico = @Id_sub Order By data desc", conn);
DataSet ds = new DataSet();
if (dropsub.SelectedValue != "")
{
cmd.Parameters.AddWithValue("@id_sub", this.dropsub.SelectedValue);
}
else
{
cmd.Parameters.AddWithValue("@id_sub", 1);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
RepDetailsPost.DataSource = ds;
RepDetailsPost.DataBind();
conn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
//definição da string de conexão
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["forumConnectionString2"].ToString()); //definição do comando sql
conn.Open();
SqlCommand sqlCommand = conn.CreateCommand();
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.CommandText = "usp_inserirmsg";
sqlCommand.Parameters.AddWithValue("@id_sub", this.dropsub.SelectedValue);
sqlCommand.Parameters.AddWithValue("@nome_user", Page.User.Identity.Name);
sqlCommand.Parameters.AddWithValue("@msg", this.txtmsg.Text);
sqlCommand.ExecuteNonQuery();
this.lblstatusmsg.ForeColor = Color.FromArgb(255, 6, 255, 196);
lblstatusmsg.Text = "Mensagem enviada";
conn.Close();
}
protected void novocomentario_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
Panel1.Visible = true;
}
}
Topico1(), где связываются с DropDownList.
я удалил мой ответ, потому что я был явно неправильно (Page.IsPostBack!) - даже если я имел upvotes .. Какой выпадающий список дает проблему. 'droptopico' или' dropsub'? – Darren
droptopico, спасибо за помощь, вы должны оставить свой ответ, он может помочь кому-то еще, это был хороший ответ. dropub только показать, если я выбираю droptopico. – user2427935