Отобразить выбранный элемент раскрывающегося списка в указанном столбце сетки - PullRequest
0 голосов
/ 11 февраля 2019

Я сейчас работаю над проектом.Существует GridView, подключенный к базе данных sql.Существует один из DropDown идентификатора SumbitTo_dd, который не является столбцом в базе данных, но элементы, привязанные к списку, относятся к другой таблице в базе данных.Я хочу отобразить выбранный элемент из списка в последнем столбце GridView, так как у меня есть другие данные, также отображаемые в сетке.У меня есть в основном 2 вопроса:

1) Как мой отображаемый запрос для gridview для файла .aspx изменяется на выпадающий список Submit To, поскольку это не какой-либо столбец в БД, а только его элементы, которые уже обработаны иbinded?

2) Как отобразить выбранное значение раскрывающегося списка в указанном столбце таблицы сетки?

Пожалуйста, помогите!

Aspx:

<asp:DropDownList
  ID="Submit_dd"
  placeholder=""
  Cssclass="form-control"
  runat="server"
></asp:DropDownList>

<asp:GridView
  ID="gridview_TS"
  CssClass="table table-striped table-hover"
  runat="server"
  GridLines="None"
  AutoGenerateColumns="False"
  AllowPaging="True"
  AllowSorting="True"
  PageSize="20"
  DataKeyNames="EmpId_int,ProjectCode_int"
  DataSourceID="SqlDataSource1"
>
  <Columns>
    <asp:BoundField
      DataField="Chk_Int"
      HeaderText="Chk_Int"
      SortExpression="Chk_Int"
      Visible="False"
    />
    <asp:TemplateField HeaderText="">
      <ItemTemplate>
        <asp:CheckBox ID="cbSelect" CssClass="form-control" runat="server" />
      </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="EmpId_Int" HeaderText="EmpId_Int" />
    . . . .
    <asp:BoundField
      DataField="EmpName_vc"
      HeaderText="Submit To"
      SortExpression="EmpName_vc"
    />
  </Columns>
</asp:GridView>

<asp:SqlDataSource
  ID="SqlDataSource1"
  runat="server"
  ConnectionString="<%$ ConnectionStrings:TSMSConnectionString %>"
  SelectCommand="SELECT S.EmpId_Int, T.Chk_Int, T.TSDate_dt, T.ProjectCode_Int, P.ProjectName_vc, 
                     T.CCode_Int, C.CostCode_vc, C.CCode_vc, T.TSRhours_nu, T.TSOhours_nu, T.JobDescp_vc, E.EmpName_vc
                     T.SubmitTo_Int FROM TSHistory T LEFT JOIN Sec_Users S ON T.EmpId_Int= S.EmpId_Int 
                     LEFT JOIN Gen_ProjectList P ON T.ProjectCode_Int = P.ProjectCode_Int 
                     LEFT JOIN Gen_CCList C ON T.CCode_Int= C.CCode_Int LEFT JOIN Gen_Employee E 
                     ON T.EmpId_Int = E.EmpId_Int WHERE (S.UserId_vc = @userId) AND (T.SubmitTo_Int = 0) ORDER BY T.TSDate_dt DESC "
>
  <SelectParameters>
    <asp:SessionParameter
      DefaultValue=""
      Name="userId"
      SessionField="user"
      Type="string"
    />
  </SelectParameters>
</asp:SqlDataSource>

C # Bind SubmitTo DropDownList из базы данных

protected void BindSubmitTo()
{
    try
    {
        cmd.CommandText = "select D.EmpId_Int, E.EmpName_vc from Dept_PM_HOD_List D Left Join Gen_Employee E on D.EmpId_Int = E.EmpId_Int where D.LCode_Int = @intDeptId and D.EmpId_Int<> @intEmpId and(E.EmpType_vc ='PM' or(E.EmpType_vc = 'HOD'))";
        cmd.Parameters.AddWithValue("@intDeptId", LocId.Text);
        cmd.Parameters.AddWithValue("@intEmpId", EmpID.Text);
        cmd.Connection = Cnn;
        // Cnn.Open();

        SqlDataReader reader;
        ListItem newItem = new ListItem();
        newItem.Text = "--Select--";
        newItem.Value = "0";
        Submit_dd.Items.Add(newItem);

        Cnn.Open();
        reader= cmd.ExecuteReader();
        while(reader.Read())
        {
            newItem = new ListItem();
            newItem.Text = reader["EmpName_vc"].ToString();
            newItem.Value = reader["EmpId_Int"].ToString();
            Submit_dd.Items.Add(newItem);
        }
        reader.Close();
        Cnn.Close();

    }
    catch (Exception ex)
    {
        Response.Write("Error:" + ex.Message.ToString());
    }
}

//OnCreate_btnClick: Where i want all my enteries to be inserted into the db except of the submitTo_dd value which only for display purpose:


protected void btnCreate_click(object sender, EventArgs e)
{
    try
    {
        if (DateTxt.Text != "" && (PName_dd.Text != "" || PName_dd.Text != "0") && (CCG_dd.Text != "" || CCG_dd.Text != "0") && (CCL_dd.Text != "" || CCL_dd.Text != "0"))
        {
            DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
            if (dt > DateTime.Today)
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Invalid date')", true);
                RefreshSrc();
            }
            else
            {
                cmd.CommandText = "INSERT INTO TSHistory(EmpId_Int, ProjectCode_Int, TSDate_dt, CCode_Int, TSRhours_nu, TSOhours_nu, JobDescp_vc) VALUES(@GEId, @Pcode, @date, @CCode, @Rhr, @Ohr, @job)";
                cmd.Parameters.AddWithValue("@GEId", EmpID.Text);

                cmd.Parameters.AddWithValue("@PCode", PCode_txt.Text);
                cmd.Parameters.AddWithValue("@date", dt);
                cmd.Parameters.AddWithValue("@CCode", CCL_dd.SelectedValue);
                cmd.Parameters.AddWithValue("@Rhr", R_txt.Text);
                cmd.Parameters.AddWithValue("@Ohr", O_txt.Text);
                cmd.Parameters.AddWithValue("@job", JobDesc_txt.Text);
                //  cmd.Parameters.AddWithValue("@Emp", EmpID.Text);
                cmd.Connection = Cnn;
                Cnn.Open();
                cmd.ExecuteNonQuery();
                Cnn.Close();
                displaySubmitTo();
                updateUserDetails();
                // displayTS();
                RefreshSrc();
                RefreshDatabase();
            }
        }
        else if (DateTxt.Text == "")
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Select date')", true);
        }
        else
        {
            //validations
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...