powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / помогите с Repeater. Не могу прописать путь
13 сообщений из 13, страница 1 из 1
помогите с Repeater. Не могу прописать путь
    #38754187
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Организовано добавление файлов. И отображение этих файлов в Repeater. Так вот добавить и отобразить эти файлы у меня получилось. Директория где хранится файл создаётся согласна номеру заказа. Проблема следующая. Я не могу сделать ссылку на скачивание это файла. Т.к в пути у меня используется код заказа. Как мне добавить в путь этот кодзаказа, уже два дня голову ломаю не могу.
Пример:
Добавление и отображение.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<asp:FileUpload ID="FileUpload1" runat="server" Load="FileUpload1_Load" 
                Visible="False" onload="FileUpload1_Load"  />
                <asp:Button ID="Button1" runat="server" Text="Upload!" Visible="False" 
                onclick="Button1_Click" /> 

                 <asp:Repeater ID="Repeater1" runat="server" Visible="False">
            <ItemTemplate> 
                   <asp:HyperLink ID="url1" runat="server" Text='<%# Eval("Name") %>' NavigateUrl='<%# "~/files/" [color=red]( Вот сюда как мне добавить код заказа из бд?)/[/color] + Eval("Name")%>' />                     
            </ItemTemplate>
            <SeparatorTemplate>
                
              
            </SeparatorTemplate>
        </asp:Repeater>   



добавление файлов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
protected void FileUpload1_Load(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            HttpPostedFile user_file = FileUpload1.PostedFile;

            if (ZAKAZ.Text == "")
            {
                Repeater1.Visible = false;
            }

            if (ZAKAZ.Text != "")
            {
                string uploads_dir;
                uploads_dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "files/" + ZAKAZ.Text + "");

                DirectoryInfo uploads = new DirectoryInfo(uploads_dir);
                if (!uploads.Exists)
                    uploads.Create();


                string user_file_server_name = Path.Combine(uploads.FullName, Path.GetFileName(user_file.FileName));
                using (FileStream stream = new FileStream(user_file_server_name, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    byte[] buffer = new byte[10240];
                    int bytes_read = 0;
                    do
                    {
                        stream.Write(buffer, 0, bytes_read);
                        bytes_read = user_file.InputStream.Read(buffer, 0, buffer.Length);
                    } while (bytes_read > 0);
                }
            }
        }
    }


Отображение файлов.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
protected void Page_PreRender(object sender, EventArgs e)
    {
        string uploads_dir;
        uploads_dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "files/" + ZAKAZ.Text + " ");

        DirectoryInfo uploads = new DirectoryInfo(uploads_dir);
        if (!uploads.Exists)
            uploads.Create();
        Repeater1.DataSource = uploads.GetFiles();
        Repeater1.DataBind();

    }
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754193
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё пыталась сделать через linkbutton, вроде получилось. Но проблема. Первый файл добавила, он открывается правильно. Второй файл уже путается. Т.е нужно как то айди определить.
Вот ещё пример.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 <asp:FileUpload ID="FileUpload1" runat="server" Load="FileUpload1_Load" 
                Visible="False" onload="FileUpload1_Load"  />
                <asp:Button ID="Button1" runat="server" Text="Upload!" Visible="False" 
                onclick="Button1_Click" /> 

                 <asp:Repeater ID="Repeater1" runat="server" Visible="False">
            <ItemTemplate>           
                 <asp:LinkButton ID="LinkButton2" runat="server" onclick="LinkButton2_Click" Text='<%# Eval("Name") %>'/>
            </ItemTemplate>
            <SeparatorTemplate>
                
              
            </SeparatorTemplate>
        </asp:Repeater> 




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
protected void LinkButton2_Click (object sender, EventArgs e)
    {
        using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["TNConnectionString"].ConnectionString))
        {
            //Sql запрос выбор Модификация, ГодВыпуска если НомерШасси = шасси.Text
            string query = @"select * from тн.ЗаказФайлы where Заказ = '" + ZAKAZ.Text + "'";
            SqlCommand cmd = new SqlCommand(query, cn);
            cn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            //Чтение из базы данных Модификация, ГодВыпуска и автозаполнение их в поле Модификация.Text и ГодВыпуска.Text
            while (reader.Read())
            {
                string имяфайла;
                string i;
                string файл;
                string zk;

                имяфайла = reader["ИмяФайла"].ToString();
                zk = reader["Заказ"].ToString();
                i = reader["ИД"].ToString();
                файл = reader["Файл"].ToString();

                //Открываем документ в новом окне                
                string clientScript = string.Format("<script>window.open('/files/" + zk + "/" + имяфайла + "','_blank')</script>");
                this.ClientScript.RegisterStartupScript(this.GetType(), "MessageToUser", clientScript);

            }
            reader.Close();
            cn.Close();

        }
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754264
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da haroch,

,. на всякий случая, не вдаваясь в подробности - свойствам серверных контролов можно присваивать значения не только прямо в разметке, но и в Page_Load ... т.е. HyperLink.NavigateURL = вотето + вотето + суффикстакойвот ...
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754306
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik,
это я знаю.
Но проблема такая же будет. в Таких случаях как то либо айди передавать нужно, либо до этого контрола достучаться, у него же работа динамически, как он поймёт, что я нажимаю на ссылку и что открыть именно этот файл. Мне бы лучше вот как первый вариант, ссылку прописать в hyperlink, eval("КодЗаказа") не получается. Говорит не найдено, даже если я датасоурс добавлю.

NavigateUrl='<%# "~/files/"+ КодЗаказа + "/" + Eval("Name")%>'

путь должен быть такой /files/2345/проба.xls примеру.=((((((
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754341
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da haroch,

...в варианте с LinkButton добавьте, например:

Код: plaintext
1.
CommandArgument=='<%#Eval("OrderID") + "^" + Eval("FileName") %>' CommandName="SaveAttachment" OnCommand="SaveAttachment"



... а в обработчике распарсите этот аргумент и сформируйте путь, а далее FileInfo, Response.WriteFile ну и т.д.
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754343
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там опечатка с двумя знаками "=="
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754358
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotikтам опечатка с двумя знаками "=="
я поняла что опечатка=)
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754362
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotikda haroch,

...в варианте с LinkButton добавьте, например:

Код: plaintext
1.
CommandArgument=='<%#Eval("OrderID") + "^" + Eval("FileName") %>' CommandName="SaveAttachment" OnCommand="SaveAttachment"



... а в обработчике распарсите этот аргумент и сформируйте путь, а далее FileInfo, Response.WriteFile ну и т.д.

Всегда трудности с этим, но спасибо попробую разобраться.
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754468
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["TNConnectionString"].ConnectionString))
            {
                //Sql запрос
                string query = @"select * from тн.ЗаказФайлы where Заказ = '" + ZAKAZ.Text + "'";
                SqlCommand cmd = new SqlCommand(query, cn);
                cn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                //Чтение из базы данных
                while (reader.Read())
                {
                    string имяфайла;
                    string i;
                    string файл;
                    string zk;
                    имяфайла = reader["ИмяФайла"].ToString();
                    zk = reader["Заказ"].ToString();
                    i = reader["ИД"].ToString();
                    файл = reader["Файл"].ToString();

                    //Открываем документ в новом окне                
                    HyperLink lnkEdit = (HyperLink)e.Item.FindControl("url1");
                    lnkEdit.NavigateUrl = String.Format("/files/" + zk + "/" + имяфайла + "'");

                }
                reader.Close();
                cn.Close();

            }            
                
        }
    }


Сделала вот так, но всё равно не корректно. Как теперь определить айди каждого файла. Всё уже замучилась=(
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754527
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da haroch,

.. сделайте через GridView, те параметры, которые не нужно отображать (напр, КодЗаказа и т.д.) забейте через

Код: html
1.
2.
3.
4.
5.
6.
7.
<asp:TemplateField>
 <ItemTemplate>
<asp:Label ID="lblFile" Visible="False" Width="0%" 
Text='<%# DataBinder.Eval(Container.DataItem,"КодЗаказа") %>'
                                            runat="server" />
</ItemTemplate>
</asp:TemplateField>



...видно их не будет, а обратиться к ним потом можно будет через FindControl в GridView_RowCommand ... ну, или как там в Репитере индекс ищется ...
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754722
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik,
заработало.
<asp:GridView ID="GridView2" runat="server" EnableModelValidation="True"
AutoGenerateColumns="False" GridLines="None" ShowHeader="False"
Visible="False" DataSourceID="SqlDataSource2">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("ИмяФайла") %>' NavigateUrl='<%# "~/files/" + Eval("Заказ") + "/" + Eval("ИмяФайла")%>'/>
<asp:Label ID="Label39" runat="server" Visible="False"
Text='<%# Eval("Заказ") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38754760
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da harochcarrotik,
заработало.
<asp:GridView ID="GridView2" runat="server" EnableModelValidation="True"
AutoGenerateColumns="False" GridLines="None" ShowHeader="False"
Visible="False" DataSourceID="SqlDataSource2">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("ИмяФайла") %>' NavigateUrl='<%# "~/files/" + Eval("Заказ") + "/" + Eval("ИмяФайла")%>'/>
<asp:Label ID="Label39" runat="server" Visible="False"
Text='<%# Eval("Заказ") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
именно так вот и написано?

Text='<%# Eval("ИмяФайла") %>'
поля таблицы базы на русском ?
es ist fantastisch :(
...
Рейтинг: 0 / 0
помогите с Repeater. Не могу прописать путь
    #38755074
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
monstrU,
сама в шоке=)))) пришёл не давно новый начальник, его сервер и его базы, т.е распоряжение так писать=))) ну кто я такая, чтоб спорить=)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / помогите с Repeater. Не могу прописать путь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]