0

我是一个极端的初学者,并且在这方面做了很多搜索,但没有多大成功——我不确定这是否可能/是否有意义:我正在尝试创建一个工作委员会数据库和网页,其中包含指向相应页面的链接的职位。我在 mySQL 和 ASP.net 中有一个 gridview,其中包含职位、日期和页面的相对链接/路径,以及对职位的进一步描述。我想使用链接列中的相对路径将职位名称超链接(希望只是编写脚本以生成完整链接——而不是为每一行硬编码)。当此页面运行时,链接列很可能会被隐藏。这样用户就可以在有任何变化时编辑链接列,而不必过多地编辑代码(如果有的话)。

[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 代码,我知道我需要一个带有导航 URL 的职位名称的超链接字段或列。但不知道如何连接我上面的两个表列。我会很感激我能得到的任何帮助:)

<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 回答