1

我正在做一个涉及 SQLite 数据库和一堆图像的项目。一切都将被放入外部硬盘驱动器中,并且一切都是只读的(没有 CRUD 的东西)。

该数据库包含一个照片表,其中一列(名为路径)是照片的路径(字符串)。我想使用 Telerik Rotator 来显示这些照片(它位于 RadWindow 内,如果对您有帮助的话,它会在 RadGrid 中选择一行后打开。)

我的问题是:需要更改路径。每个都以 H:\ 开头,我需要将其删除,并替换为 ~/ThisFolder/(它只指向 ../ThisFolder)。对于项目的所有其他部分,使用ResolveUrl("~/ThisFolder/" + path.Remove(0, 3))都有效,但我不知道如何在这里做。

我要么需要在将 SQLite 数据放入 DataTable 之后操作 Path 列中的数据,要么稍后在 Path 字符串进入 asp:Image 标记之前对其进行操作。

以下是我从 SQLite 数据库中获取数据并将其放入 DataTable 的方式:

    public static DataTable dtTable;
    public static string connectionString = ConfigurationManager.ConnectionStrings["Entity"].ConnectionString;
    public SQLiteConnection SQLiteConnection = new SQLiteConnection(connectionString);
    public SQLiteDataAdapter SQLiteDataAdapter = new SQLiteDataAdapter();
    public SQLiteCommand SQLiteCommand = new SQLiteCommand();    

private void GetDataSource() //called in Page_Load
    {
        dtTable = new DataTable();
        SQLiteConnection.Open();
        try
        {
            string selectQuery = "SELECT ParentTableID, PhotoID, Path FROM tblPhoto";
            SQLiteCommand myCommand = new SQLiteCommand(selectQuery, SQLiteConnection);
            using (SQLiteDataReader myReader = myCommand.ExecuteReader())
            {
                dtTable.Load(myReader);
            }
            RadRotator1.DataSource = dtTable;
        }
        finally
        {
            SQLiteConnection.Close();
        }
        RadRotator1.DataBind();
    }

到目前为止,这是我的 asp 标签:

<asp:Image ID="Images" runat="server" AlternateText="Images" ImageUrl='<%#Bind("~/ThisFolder/{0}", "Path")%>' />

虽然 ImageURL 将是 ../ThisFolder/H:/yadayada 这里....

任何帮助将非常感激!如果我在某个地方不清楚,请随时提出问题。

4

1 回答 1

1

我会尝试 SQLLite 的replace

SELECT ParentTableID, PhotoID, replace(Path,'H:\','') as Path FROM tblPhoto

于 2012-04-19T16:19:11.163 回答