0

私は非常に初心者で、これについてかなりの検索を行ってきましたが、あまり成功していません-これが可能/意味があるかどうかはわかりません:それぞれのページへのリンクを含む求人掲示板データベースとウェブページを作成しようとしています仕事の。mySQLとASP.netに、ジョブのタイトル、日付、およびジョブの詳細が記載されたページへの相対リンク/パスを含むグリッドビューがあります。リンク列からの相対パスを使用して役職をハイパーリンクしたいと思います(行ごとにハードコーディングされていない、完全なリンクを生成するためにスクリプト化されていることを願っています)。このページを実行しているときは、リンク列が非表示になっている可能性があります。これは、ユーザーがリンク列を変更した場合に編集できるようにするためであり、コードを編集する必要がまったくないようにするためです。

[Job Title]    [Date Posted]      [Link]
Job 1           June, 2012         /california/job1.asp
Job 2           August, 2012       /newyork/job2.asp
etc..

ブラウザに表示したい:

Job Title       Date Posted
[Job 1][1]      June, 2012
[Job 2][2]      August, 2012

これがテーブルのaspコードです。navigateurlを使用した役職のハイパーリンクフィールドまたは列が必要です。しかし、上記の2つのテーブル列を接続する方法がわかりません。私が得ることができるどんな助けにも感謝します:)

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        <h2>
            Job Postings 
        </h2>
        <p>
            The following are the current open positions:
        </p>
        <p>
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" 
                EmptyDataText="There are no data records to display." BackColor="White" 
                BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
                ForeColor="Black" GridLines="Horizontal">
                <Columns>
                    <asp:BoundField DataField="JobTitle" HeaderText="JobTitle" 
                        SortExpression="JobTitle" />
                    <asp:BoundField DataField="JobDatePosted" HeaderText="JobDatePosted" 
                        SortExpression="JobDatePosted" DataFormatString="{0:d}" />
                    <asp:BoundField DataField="JobLink" HeaderText="JobLink" 
                        SortExpression="JobLink" />
                </Columns>
                <FooterStyle BackColor="#CCCC99" ForeColor="Black" />
                <HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />
                <SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#F7F7F7" />
                <SortedAscendingHeaderStyle BackColor="#4B4B4B" />
                <SortedDescendingCellStyle BackColor="#E5E5E5" />
                <SortedDescendingHeaderStyle BackColor="#242121" />
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                SelectCommand="SELECT [JobTitle], [JobDatePosted], [JobLink] FROM [jobpostings]">
            </asp:SqlDataSource>
        </p>
    </asp:Content>

これがばかげた考えであるならば、それをするより良い方法を私に知らせてください?

4

2 に答える 2

0

このコードで試すことができます

<asp:HyperLinkField 
DataNavigateUrlFields=""
DataNavigateUrlFormatString="....aspx?id={0}"
DataTextField=" 
NavigateUrl="" />

リンク: http: //msdn.microsoft.com/fr-fr/library/zt9c22bx%28v=vs.80%29

于 2012-08-28T19:46:23.900 に答える
0

ベストプラクティスは、次のようなItemTemplateを使用することですset/edit/update。プログラムでハイパーリンクコントロールと値を追加します。編集目的でeditTemplateを追加します。

Design.aspx :( テスト済みコード)

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            onrowdatabound="GridView1_RowDataBound" 
            onrowcancelingedit="GridView1_RowCancelingEdit" 
            onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating">
         <Columns>
             <asp:TemplateField HeaderText="Id">
                 <ItemTemplate>
                     <asp:Label ID="lblid" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="JobTitle">
                 <ItemTemplate>
                     <asp:HyperLink ID="jobTitle" Text='<%# Bind("JobTitle") %>'  NavigateUrl='<%# Bind("JobLink") %>'  runat="server"></asp:HyperLink>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="Post Date">
                 <ItemTemplate>
                     <asp:Label ID="lbldatepost" runat="server" Text='<%# Bind("JobDatePosted","{0:dd MMM yyyy}") %>'></asp:Label>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField >
                 <ItemTemplate>
                     <asp:Label ID="lblLink" runat="server" Text='<%# Bind("JobLink") %>'></asp:Label>
                 </ItemTemplate>
                 <EditItemTemplate>
                     <asp:TextBox ID="txtesetLink" runat="server" Text='<%# Bind("JobLink") %>'></asp:TextBox>
                 </EditItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField ShowHeader="False">
                 <EditItemTemplate>
                     <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" 
                         CommandName="Update" Text="Update"></asp:LinkButton>
                     &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                         CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                 </EditItemTemplate>
                 <ItemTemplate>
                     <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                         CommandName="Edit" Text="Edit"></asp:LinkButton>
                 </ItemTemplate>
             </asp:TemplateField>
         </Columns>

    </asp:GridView>

コードビハインド:

 protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
           gvBind();
        }
    }
    public void gvBind()
    {
        SqlDataAdapter dap = new SqlDataAdapter("SELECT id, [JobTitle], [JobDatePosted], [JobLink] FROM [jobpostings]", con);
        DataSet ds = new System.Data.DataSet();
        dap.Fill(ds);
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
    }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        gvBind();
    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        gvBind();
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox txtlink = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtesetLink");
        Label lblid = (Label)GridView1.Rows[e.RowIndex].FindControl("lblid");

        int result = UpdateQuery(txtlink.Text, lblid.Text);

        if (result > 0)
        {
            //lblmsg.text = "Record updated";
            Response.Write("Record updated");
        }
        GridView1.EditIndex = -1;
        gvBind();

    }
    public int UpdateQuery(string setlink,string id)
    {
        SqlCommand cmd=new SqlCommand("update jobpostings set JobLink='"+setlink+"' where id='"+id+"'",con);
        con.Open();
        int temp = cmd.ExecuteNonQuery();
        con.Close();
        return temp;
    }

注:問題がほぼ解決したことを願っています。問題が発生した場合は、今すぐお知らせください。

于 2012-08-28T19:56:19.630 に答える