Member 12869977 Ответов: 2

В C#, элемент управления UserControl : как я могу извлечь первичный ключ для использования в пользовательских элементов управления.ascx-файл?


- Привет! У меня есть GridView с привязанными к данным полями из базы данных mysql. Он содержит два столбца IdTask(первичный ключ),
TaskName и одна кнопка, которая открывает диалоговое окно jQuery.
Мне нужно заполнить этот диалог на основе идентификатора задачи из строки, в которой я нажал кнопку.
И у меня есть пользовательский элемент управления с другим Gridview, который содержит указанные данные, которые мне нужно отобразить в диалоговом окне.

Это то, что у меня есть до сих пор:

страница ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="ucFiles" TagName="Files" Src="~/UserControlFiles.ascx" 

the script: 
<script>
       $(document).ready(function () {
            $(".btnFiles").click(function () {
                
                $("#divModalFiles").dialog({
                    dialogClass: "no-close",
                    modal: true,
                    title: "Files",
                    width: 450,
                    height: 440,
                    buttons: {
                        Close: function () {
                            $(this).dialog('close');
                        }
                    },
                    open: function (type, data) {
                        $(this).parent().appendTo("form");
                    }
                    
                });
                return false;
            });
        });
    </script>
<form id="form1" runat="server" style="padding: 10px; width: 550px">
	<asp:GridView DataKeyNames="IdTask" ID="gvTask" runat="server"
        AutoGenerateColumns="false">
		<Columns>
                <asp:BoundField DataField="IdTask" HeaderText="ID" />
                <asp:BoundField DataField="Name" HeaderText="Task"  />
		<asp:TemplateField>
                        <ItemTemplate>
                            <asp:ImageButton ID="btnFile" CssClass="btnFiles" runat="server" ImageUrl="img/files.png.png"/>
                        </ItemTemplate>
                </asp:TemplateField>
 		</Columns>
        </asp:GridView>
	<div id="divModalFiles" style="display:none">
            <ucFiles:Files runat="server"/>
        </div>
</form>
</body>

В пользовательского элемента управления ascx вносятся:
<div id="file">
          <asp:Literal ID="litMesaj" runat="server" Visible="false"></asp:Literal>
          <asp:FileUpload ID="fUpload" runat="server" />
          
          <br />
          <br />
          <asp:Label ID="lblDescFile" runat="server" Text="Description"></asp:Label>
          <asp:TextBox ID="txtDescFile" runat="server" ></asp:TextBox>
          <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
          <br />
          <br />
           
          <asp:GridView ID="gvFiles" DataKeyNames="IdFiles" runat="server" AutoGenerateColumns="false" EmptyDataText="No files uploaded">
              <Columns>
                  <asp:BoundField DataField="IdFiles" HeaderText="ID" />
                  <asp:BoundField DataField="IdTask" HeaderText="IdTask" />
                  <asp:BoundField DataField="Name" HeaderText="File Name" />
                  <asp:BoundField DataField="Description" HeaderText="Description" />

                  <asp:TemplateField>
                      <ItemTemplate>
                          <asp:LinkButton ID="lnkDownload" runat="server" Text="Download File" OnClick="lnkDownload_Click" CommandArgument='<%# Eval("Url") %>'></asp:LinkButton>
                      </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField>
                      <ItemTemplate>
                          <asp:ImageButton runat="server" ID="btnDelFile" ImageUrl="~/delete.png.png" OnClientClick="return confirm('Sure?');" OnClick="btnDelFile_Click"/>
                      </ItemTemplate>
                  </asp:TemplateField>
              </Columns>              
          </asp:GridView>
      </div>  

В ascx вносятся.в CS пользовательских элементов управления:

// the function i call in page load to display the files
private void loadFiles()
   {
       string sqlFiles = "select * from files where IdTask=" + ?? ;// here is where i need the help how can i retrieve the IdTask from the gridview on the aspx Page?
       MySqlCommand cmd = new MySqlCommand(sqlFiles, conn);

   MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
   DataTable dtFiles = new DataTable();
   adp.Fill(dtFiles);
       gvFiles.DataSource = dtFiles;
       gvFiles.DataBind();
   }


Вы не могли бы мне помочь? без этого идентификатора я также не могу использовать функции загрузки или загрузки файлов. В настоящее время он показывает только форму с загрузкой файлов и кнопкой загрузки
Если я не ясно выразился(английский не мой родной язык) с тем, что мне нужно, пожалуйста, не стесняйтесь задавать любые вопросы, и я объясню :)

РЕДАКТИРОВАТЬ:

Я также хочу добавить, что в базе данных у меня есть 2 таблицы:
1. IdTask, Задача
2. IdFile, IdTask, FileName и т. д..

таким образом, каждая задача имеет файл coresponding

Что я уже пробовал:

смотрю всякие учебники и до сих пор не имею решения

2 Ответов

Рейтинг:
2

Faran Saleem

Я думаю,вы спрашиваете, как получить идентификатор в переменной C#. Если это то, что вы говорите.
Тогда все просто.

Var ID = gvFiles.Rows[e.RowIndex].Cells[0].Text;


Member 12869977

Спасибо за ваш ответ, но нет, то, что вы написали, дает идентификатор файла, и мне это не нужно, мне нужно передать значение идентификатора задачи из aspx gridview, того, что с задачами, на страницу управления пользователем и использовать его там, чтобы я мог отображать загрузку и загрузку файлов. Пожалуйста, смотрите обновленный вопрос для лучшего понимания.

Рейтинг:
1

Sachin Kakade

Как я понимаю, что вы собираетесь сказать, вы не можете получить "IdTask", это можно решить, передав два аргумента в командном аргументе, надеюсь, он ответит за вас.

<pre><asp:templatefield>
<itemtemplate>
<asp:LinkButton ID="lnkDownload" runat="server" Text="Download File" OnClick="lnkDownload_Click" CommandArgument='<%# Eval("Url")+ ";" +Eval("IdTask")>'></asp:LinkButton>
    </itemtemplate>
</asp:templatefield>

Затем вы получаете идентификатор и url-адрес, которые доступны в аргументе команды. вам нужно разделить его, тогда вы получите как ID, так и URL

string strVal = e.CommandArgument.ToString();
    string[] arg = new string[2];
    char[] splitter = { ';' };
    arg = strVal .Split(splitter);
    string strUrl = arg[0].ToString();
    string strIdTask = arg[1].ToString();