【问题标题】:find user_id from stored string which is in string format and the id is stored with semicolon从存储的字符串中查找user_id,它是字符串格式,id用分号存储
【发布时间】:2017-10-30 12:49:49
【问题描述】:

在这里我可以用分号存储许多用户 ID,我想要一个与下拉列表中选择的 user_id 匹配的 ID

<asp:GridView ID="TrainingTakenGridView" runat="server" AllowSorting="true" AlternatingRowStyle-CssClass="alt" AutoGenerateColumns="False" AutoGenerateSelectButton="false" CssClass="mGrid1" Width="100%" OnPageIndexChanging="TrainingTakenGridView_PageIndexChanging" DataKeyNames="training_id" OnSelectedIndexChanged="TrainingTakenGridView_SelectedIndexChanged" OnRowDataBound="TrainingTakenGridView_RowDataBound" >
                       <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast" PageButtonCount="10" />
                        <AlternatingRowStyle CssClass="alt" />
                        <Columns>
                            <asp:BoundField HeaderText="Training Date" DataField="training_date" />
                            <asp:BoundField HeaderText="Topic" DataField="topic" />

                        </Columns>
                   </asp:GridView>

这是我的 C# 代码

  private DataTable bindTrainingAttendeedGridView(string condition)
    {

        DataTable dtGrid = new DataTable();
        con.ConnectionString = constr;
        //string query = "select training_id,convert(varchar(10),training_date,101) AS training_date,trainee,topic from tbl_training_attendee inner join tbl_userinfo on tbl_training_attendee.trainer=tbl_userinfo.user_id where tbl_training_attendee.training_id=" + condition;
        string query = "select training_id,trainee,topic from tbl_training_attendee where tbl_training_attendee.training_id=trainee "+condition;
        SqlCommand cmd = new SqlCommand(query, con);
        SqlDataAdapter sqladapter = new SqlDataAdapter(cmd);
        sqladapter.Fill(dtGrid);
        if (dtGrid.Rows.Count <= 0)
        {
            Label1.Text = "No Matching Training taken Entries Found, Thank You.";
        }
        else
        {
            Label1.Text = "";
        }
        //con.Open();
        return dtGrid;
    }
    protected void TrainingAttendenceGridViewBind(string condition)
    {
        try
        {
            TrainingAttendeedGridView.DataSource = bindTrainingAttendeedGridView(condition);
            TrainingAttendeedGridView.DataBind();

        }
        catch (Exception er)
        {
            throw er;
        }
    }
    protected void training_attendence_condition()
    {
        string condition = "";
        if (UserDropDownList.SelectedIndex > 0)
        {
            condition += "AND tbl_training_attendee.trainee='" + UserDropDownList.SelectedValue + "'";

        }

        TrainingAttendenceGridViewBind(condition);
    }

但如果数据库中有记录可用,它仍然可以显示空字段。请帮帮我。

这是我显示实习生的数据库

【问题讨论】:

  • 永远不要将数据存储为分号分隔的项目。只会给你带来很多麻烦。
  • 使用string.Split(',')。但正如@jarlh 所说,最好不要那样存储它们。

标签: c# sql asp.net .net sql-server


【解决方案1】:

试试这个代码来改变你的 SQL 查询:

select training_id,CONVERT(varchar(10),training_date,101) AS Training_date,topic,trainee from tbl_training_attendee where CONCAT( ',',trainee,',') like CONCAT( '%,','"+UserDropDownList.SelectedValue+"',',%' )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    相关资源
    最近更新 更多