将 HiddenField 数据类型从字符串转换为 int

时间:2021-06-10 22:49:32

标签: c# asp.net

我使用 jquery pager 将数据加载到我的 gridview 。现在我的 gridview 的每一行都有按钮。点击按钮时,我想得到第一列的 id 值,它是一个整数值。

<asp:HiddenField ID="hfId" runat="server" />
  <asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="False"
                                                        BackColor="White" BorderColor="#3366CC" BorderStyle="None"
                                                        Font-Names="Century Gothic" Font-Size="XX-Small" DataKeyNames="id"
                                                        Width="100%" Style="margin-bottom: 0px" CssClass="grid">
                                                        <Columns>
                                                            <asp:TemplateField>
                                                                <ItemTemplate>
                                                                    <asp:CheckBox ID="chkSelect" runat="server" />
                                                                </ItemTemplate>
                                                            </asp:TemplateField>
                                                           <asp:BoundField DataField="id" HeaderText="id" />
                                                            <asp:BoundField DataField="pid" HeaderText="pid" />
                                                            <asp:BoundField DataField="description" HeaderText="Description" />
                                                            <asp:BoundField DataField="country" HeaderText="country" />
                                                            <asp:BoundField DataField="pack" HeaderText="pack" />
                                                            <asp:BoundField DataField="customer" HeaderText="customer" />
                                                            <asp:BoundField DataField="jobnumber" HeaderText="jobnumber" />
                                                            <asp:BoundField DataField="artworkdate" HeaderText="artworkdate" />
                                                            <asp:BoundField DataField="reprodate" HeaderText="reprodate" />
                                                            <asp:BoundField DataField="artworknumber" HeaderText="artworknumber" />
                                                            <asp:BoundField DataField="templateno" HeaderText="templateno" />
                                                             <asp:TemplateField>
                                                                <ItemTemplate>

                                                                </ItemTemplate>
                                                                 
                                                            </asp:TemplateField>
                                                             <asp:TemplateField>
                                                                <ItemTemplate>
                                                              <asp:Button Text="Edit" ID="lnkView1" runat="server" OnClick="Inkview_Click1"     ForeColor="white"  BackColor="#FF6600"/>
                                                         </ItemTemplate>
                                                            </asp:TemplateField>
                                                
                                                        </Columns>
                                                        <HeaderStyle BackColor="green" Font-Bold="True" ForeColor="#CCCCFF" />
                                                        <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
                                                        <RowStyle BackColor="White" ForeColor="#003399" />
                                                        <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
                                                        <SortedAscendingCellStyle BackColor="#EDF6F6" />
                                                        <SortedAscendingHeaderStyle BackColor="#0D4AC4" />
                                                        <SortedDescendingCellStyle BackColor="#D6DFDF" />
                                                        <SortedDescendingHeaderStyle BackColor="#002876" />
  </asp:GridView>
                                                    <br />
     <div class="Pager" style="width: 100%"></div>

///////////////////////////////////////////// /////////////

    <script src="ASPSnippets_Pager.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            GetCustomers(1);
        });
        $('body').on('click', '.Pager .page', function () {
            GetCustomers(parseInt($(this).attr('page')));
        });
        $('body').on('click', '.view', function () {
            $('[id*=hfId]').val($(this).closest('tr').find('td').eq(1).html());
        });
        var i = 0;
        function GetCustomers(pageIndex) {
            $.ajax({
                type: "POST",
                url: "Default22.aspx/GetCustomers",
                data: '{pageIndex: ' + pageIndex + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    $('[id$=gvDetails]').prepend($("<thead></thead>").append($('[id$=gvDetails]').find("tr:first"))).DataTable().destroy();
                    var xmlDoc = $.parseXML(response.d);
                    var xml = $(xmlDoc);
    
                    var customers = xml.find("job");
                    var row = $("[id$=gvDetails] tbody tr:last-child").eq(0).clone(true);
                    $("[id$=gvDetails] tbody tr").not($("[id$=gvDetails] tbody tr:first-child")).remove();
                    $.each(customers, function () {
                        $("td", row).eq(1).html($(this).find("id").text());
                        $("td", row).eq(2).html($(this).find("pid").text());
                        $("td", row).eq(3).html($(this).find("description").text());
                        $("td", row).eq(4).html($(this).find("country").text());
                        $("td", row).eq(5).html($(this).find("pack").text());
                        $("td", row).eq(6).html($(this).find("customer").text());
                        $("td", row).eq(7).html($(this).find("jobnumber").text());
                        $("td", row).eq(8).html($(this).find("artworkdate").text());
                        $("td", row).eq(9).html($(this).find("reprodate").text());
                        $("td", row).eq(10).html($(this).find("artworknumber").text());
                        $("td", row).eq(11).html($(this).find("templateno").text());
                        $("[id$=gvDetails]").append(row);
                        row = $("[id$=gvDetails] tbody tr:last-child").eq(0).clone(true);
                    });
                    $("[id$=gvDetails] tbody tr:first-child").remove();
                    if (i != 0) {
                        $('[id$=gvDetails]').DataTable({
                            "paging": false,
                            "info": false
                        });
                    } else {
                        $('[id$=gvDetails]')
                            .prepend($("<thead></thead>").append($('[id$=gvDetails]').find("tr:first")))
                            .DataTable({
                                "paging": false,
                                "info": false
                            });
                    }
                    i++;
                    var pager = xml.find("Pager");
                    $(".Pager").ASPSnippets_Pager({
                        ActiveCssClass: "current",
                        PagerCssClass: "pager",
                        PageIndex: parseInt(pager.find("PageIndex").text()),
                        PageSize: parseInt(pager.find("PageSize").text()),
                        RecordCount: parseInt(pager.find("RecordCount").text())
                    });
                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });
        }
    </script>
////////////////////////////////////////////////////////////////////////
  protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {

        BindDummyRow();
    }
  

   

}
 private void BindDummyRow()
    {
        DataTable dummy = new DataTable();
        dummy.Columns.Add("id");
        dummy.Columns.Add("pid");
        dummy.Columns.Add("description");
        dummy.Columns.Add("Country");
        dummy.Columns.Add("pack");
        dummy.Columns.Add("customer");
        dummy.Columns.Add("jobnumber");
        dummy.Columns.Add("artworkdate");
        dummy.Columns.Add("reprodate");
        dummy.Columns.Add("artworknumber");
        dummy.Columns.Add("templateno");


        dummy.Rows.Add();
        gvDetails.DataSource = dummy;
        gvDetails.DataBind();
        //gvDetails.UseAccessibleHeader = true;
        //gvDetails.HeaderRow.TableSection = TableRowSection.TableHeader;
    }




    [WebMethod]
    public static string GetCustomers(int pageIndex)
    {
        string query = "[boj]";
        SqlCommand cmd = new SqlCommand(query);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
        cmd.Parameters.AddWithValue("@PageSize", PageSize);
        cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output;

        return GetData(cmd, pageIndex).GetXml();
    }

    private static DataSet GetData(SqlCommand cmd, int pageIndex)
    {
        string strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(strConnString))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataSet ds = new DataSet())
                {
                    sda.Fill(ds, "job");
                    DataTable dt = new DataTable("Pager");
                    dt.Columns.Add("PageIndex");
                    dt.Columns.Add("PageSize");
                    dt.Columns.Add("RecordCount");
                    dt.Rows.Add();
                    dt.Rows[0]["PageIndex"] = pageIndex;
                    dt.Rows[0]["PageSize"] = PageSize;
                    dt.Rows[0]["RecordCount"] = cmd.Parameters["@RecordCount"].Value;
                    ds.Tables.Add(dt);
                    return ds;
                }
            }
        }
    }
    protected void Inkview_Click(object sender, EventArgs e)
    {

      int id = Convert.ToInt32(((Button)sender).CommandArgument);

        Session["DatakeyValue"] = id;
        SqlConnection con = new SqlConnection("data source=NERE\\SQLEXPRESS01; Initial Catalog=kaging;Integrated Security=True;");
        SqlCommand cm = new SqlCommand();
        cm.Connection = con;
        con.Open();
        cm.CommandType = CommandType.Text;
        cm.CommandText = "SELECT pid FROM job WHERE id=@id'";
        cm.Parameters.AddWithValue("@id", Session["DatakeyValue"]);
        Label1.Text = Convert.ToString(cm.ExecuteScalar());
        con.Close();

          }

//////////////////////////////////////

This is the stored procedure i  used(boj).

CREATE PROCEDURE [dbo].[boj]
      @PageIndex INT = 1
      ,@PageSize INT = 15
      ,@RecordCount INT OUTPUT
AS
BEGIN
      SET NOCOUNT ON;
      SELECT ROW_NUMBER() OVER
      (
                  ORDER BY [id] ASC
      )AS RowNumber
      ,[id]
      ,[pid]    
      ,[description]
       ,[country]
      ,[pack]
      ,[customer]
      ,[jobnumber]
      ,[artworkdate]
      ,[reprodate]
      ,[artworknumber]
      ,[templateno]
      INTO #Results
      FROM [job]
      
      SELECT @RecordCount = COUNT(*)
      FROM #Results
            
      SELECT * FROM #Results
      WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
      
      DROP TABLE #Results
END
GO

///////////////////////////////////////////// /

我尝试了以下,同样的错误 - 输入字符串的格式不正确。

Int32.Parse(hiddenfield.value).

Convert.ToInt32(hiddenfield.value)

请帮忙

1 个答案:

答案 0 :(得分:0)

有一种更简单的方法可以从 GridView 控件中获取您的“id”。

当您绑定数据时。您可以使用 Eval 函数将 ItemTemplate 中 Button 控件的 CommandArgument 设置为记录的“id”。

    <asp:TemplateField>
        <ItemTemplate>
            <asp:Button Text="View" ID="Inkview" runat="server" OnClick="Inkview_Click" CommandArgument='<%# Eval("id") %>' ForeColor="white" BackColor="#FF6600" />
        </ItemTemplate>
    </asp:TemplateField>

通过这种方式,您可以省去使用 HiddenField 控件并尝试设置它。

然后您可以更新 InkView_Click 事件以从 CommandArgument 中提取“id”:

protected void Inkview_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(((Button)sender).CommandArgument);

            Session["DatakeyValue"] = id;
            SqlConnection con = new SqlConnection("data source=NERE\\SQLEXPRESS01; Initial Catalog=kaging;Integrated Security=True;");
            SqlCommand cm = new SqlCommand();
            cm.Connection = con;
            con.Open();
            cm.CommandType = CommandType.Text;
            cm.CommandText = "SELECT pid FROM job WHERE id=@id'";
            cm.Parameters.AddWithValue("@id", Session["DatakeyValue"]);
            Label1.Text = Convert.ToString(cm.ExecuteScalar());
            con.Close();
        }
相关问题