Кнопка Link для открытия Windows Explorer из Gridview - PullRequest
0 голосов
/ 04 июня 2010

У меня есть ссылка в Gridview, которую я хочу открыть в проводнике Windows (или explorer.exe).

<asp:GridView  ID="GridView1"runat="server" >
   <Columns>
       <asp:TemplateField>
           <ItemTemplate>
               <asp:LinkButton ID="DeploymentLocation" runat="server" CommandName="OpenLink" 
                   Text='<%# Eval("DeploymentLocation") %>' CommandArgument='<%# Eval("DeploymentLocation") %>'  />
           </ItemTemplate>
        </asp:TemplateField>
   </Columns>

и в коде у меня есть это:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
          Process.Start("explorer.exe", "/n," + e.CommandArgument.ToString());
    }

Очевидно, что это не работает, так как Process.Start работает, только если у меня есть полные права и т. Д., И т. Д. Я слышал, что могу использовать Javascript для этого, но пока не удалось. По сути, мне нужна точная ссылка, которая отображается в сетке, которая открывается при нажатии. Любая помощь будет высоко ценится!

Спасибо!

Ответы [ 3 ]

0 голосов
/ 04 июня 2010

(1) Пожалуйста, не используйте javascript для запуска локального исполняемого файла (особенно explorer.exe, который является важным системным файлом), потому что иногда брандмауэр / антивирусная программа считает ваши действия опасными / вредными.

(2) В любом случае, выполнение клиентской программы через ваш веб-сайт / веб-приложение не всегда так удобно. Я полагаю, вы хотите выполнить «explorer.exe», чтобы открыть окно для просмотра локального каталога? Если это так, вы можете смоделировать окно проводника Windows на своей веб-странице.

0 голосов
/ 04 июня 2010

Мне удалось решить это легко:

<ItemTemplate>
   <asp:HyperLink Text='<%# Eval("DeploymentLocation") %>'  id="DeploymentLocation" runat="server" Target="_blank" NavigateUrl='<%# "file:///" + Eval("DeploymentLocation").ToString() %>' ></asp:HyperLink>
</ItemTemplate>
0 голосов
/ 04 июня 2010

Как вы узнали, запуск процессов на клиентском компьютере с веб-сайта невозможен. Вы можете перенаправить на эту веб-страницу:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    Response.Redirect(e.CommandArgument.ToString());
}

Другой вариант - использовать элемент управления ActiveX , но это будет работать только в Internet Explorer.

...