0

我想在 sqlserver2008 中将一个复选框与数据库绑定。我在用户控制模块上的 asp.net C# 中工作。我写了一个代码。我想知道代码是否完美,也想知道在哪种情况下我应该放置此代码以获得正确的输出。

{
  int Post_Id = int.Parse(ViewState["ID"].ToString());
    SqlConnection cn1 = new SqlConnection();
    cn1.ConnectionString=
    ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
    SqlDataAdapter da = new SqlDataAdapter("SelectTags", cn1);
    DataTable ds = new DataTable();
    SqlCommand cmnd1 = new SqlCommand("SelectTags", cn1);
    cmnd1.Parameters.AddWithValue("@Post_Id",Post_Id);
    cmnd1.CommandType = CommandType.StoredProcedure;
    cn1.Open();
    cmnd1.ExecuteNonQuery();
    da.Fill(ds);
    cn1.Close();
    foreach (DataRow dr in ds.Rows)
    {
        String field1 = dr["Tag_Name"].ToString();
        CheckBoxList2.Items.Add(field1);
        CheckBoxList2.DataBind();
    } 
}

sql server 2008 的 SQL 查询

GO
/****** Object:  StoredProcedure [dbo].[InsertPost2Tag]    Script Date: 04/02/2013 09:47:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Alter PROCEDURE [dbo].[SelectTags]
    -- Add the parameters for the stored procedure here
@Post_Id int
AS
BEGIN

    SELECT mst_Tag.Tag_Name FROM mst_Tag INNER JOIN Post2Tag ON mst_Tag.tagId = Post2Tag.Tag_Id Where Post2Tag.Post_Id=@Post_Id

END
GO
4

2 回答 2

1

在页面加载时执行此操作

 if(!ispostback){
    CheckBoxList2.DataSource = ds; //This is the dataset that you fill from your stored procedure;
    CheckBoxList2.DataTextField = "Tag_Name";
    CheckBoxList2.DataValueField = "Tag_Name_Id";
    CheckBoxList2.DataBind();
 }

并在您的 sp 查询中再使用一个参数 Tag_Name_Id ..

 SELECT mst_Tag.Tag_Name,Tag_Name_Id FROM mst_Tag INNER JOIN Post2Tag ON mst_Tag.tagId = Post2Tag.Tag_Id Where Post2Tag.Post_Id=@Post_Id

从您的代码中删除它

foreach (DataRow dr in ds.Rows)
{
    String field1 = dr["Tag_Name"].ToString();
    CheckBoxList2.Items.Add(field1);
    CheckBoxList2.DataBind();
} 

希望这会有所帮助......如果这是你所要求的?

于 2013-04-02T10:17:48.703 回答
0

无需做任何事情只需为复选框选择数据源,并在其选定的索引更改事件中使用网格视图的选定值设置会话变量。

它对我有用……而且太容易实现了。

于 2013-04-10T06:19:49.730 回答