RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-248502

Egor Trutnev's questions

Martin Hope
Egor Trutnev
Asked: 2023-07-28 08:27:57 +0000 UTC

gitlab-ci。使用 gitlab-runner 在 shell 中构建 docker compose 的问题

  • 5

任务是在docker compose中编写项目的自动组装和发布,并随后启动。为此,我按照以下步骤操作:

  1. 在我的服务器上运行的 gitlab 中,我创建、注册并启动了2 个运行程序(一个docker,第二个shell)。

跑步者

  • 为这些跑步者配置了config.toml,之后它采用以下形式:
concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-runner"
  url = "http://gitlab.my.host123"
  id = 50
  token = "TOKEN-hidden"
  token_obtained_at = 2023-07-27T12:16:48Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

[[runners]]
  name = "shell"
  url = "http://gitlab.my.host123"
  id = 51
  token = "TOKEN-hidden"
  token_obtained_at = 2023-07-27T12:17:46Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  [runners.custom_build_dir]
    enabled = true
  [runners.cache]
    MaxUploadedArchiveSize = 0
  1. 在带有 gitlab 的服务器上,使用以下命令授予用户gitlab-runner访问 docker 的权限:

usermod -aG docker gitlab-runner

V/etc/sudoers

  1. 从文件夹中/home/gitlab-runner/删除文件.bashrc, .profile, .bash_logout

  2. 发布gitlab-ci.yml内容如下:

.docker:
  image: docker:latest
  services:
    - name: docker:dind
      alias: docker


variables:
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""

stages:
  - build
  - deploy

build:
  stage: build
  tags:
    - docker
  extends:
    - .docker
  script:
    - docker pull api.$CONTAINER_NAME:latest || true
    - >
      docker build
      --pull
      --cache-from api.my.host123/$CONTAINER_NAME:latest
      --build-arg ASPNETCORE_ENVIRONMENT="Prod"
      --tag api.my.host123/$CONTAINER_NAME:${CI_COMMIT_SHA}
      --tag api.my.host123/$CONTAINER_NAME:latest
      ./MyProject.WebApi
  only:
    - main
    - production

deploy:
  stage: deploy
  tags:
    - shell
  script:
    - mkdir -p ~/deploy
    - cp -i docker-compose.production.yml ~/deploy/docker-compose.yml
    - docker compose down --remove-orphans
    - docker compose pull
    - docker compose -f docker-compose.yml up -d
  only:
    - main
    - production
  1. 在asp.net项目中创建了一个Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 7155

ENV ASPNETCORE_URLS=http://+:7155

RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["MyProject.WebApi.csproj", "./"]
RUN dotnet restore "MyProject.WebApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyProject.WebApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyProject.WebApi.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProject.WebApi.dll"]

和两个docker-compose文件:

  • docker-compose.生产.yml
version: '3.3'

services:
  webapi_myproject:
    image: mcr.microsoft.com/dotnet/sdk:7.0
    container_name: webapi_myproject
    ports:
      - "7155:7155"
    expose:
      - "7155"
    restart:
      unless-stopped
  • 和docker-compose.yml
version: '3.3'

services:
  webapi_myproject:
    build:
      context: ./MyProject.WebApi
      dockerfile: Dockerfile
    container_name: webapi_myproject
    ports:
      - "7155:7155"
    expose:
      - "7155"
    restart:
      unless-stopped

发布并运行docker-runners 后,我得到以下输出:

结果

在构建中,一切看起来都非常好,并且项目映像是在服务器磁盘上创建的

在此输入图像描述

在这里部署...

在此输入图像描述

docker.errors.DockerException:获取服务器 API 版本时出错:HTTPConnectionPool(host='docker', port=2375): url 超出最大重试次数:/version (由 NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f612d4ea560> 引起) : 无法建立新连接: [Errno -3] 名称解析暂时失败'))

Если я добавляю в gitlab-ci.yml

before_script: docker version

deploy:
  stage: deploy
  tags:
    - shell
  before_script:
    - docker version
  script:
    - mkdir -p ~/deploy
    - cp -i docker-compose.production.yml ~/deploy/docker-compose.yml
    - docker compose down --remove-orphans
    - docker compose pull
    - docker compose -f docker-compose.yml up -d
  only:
    - main
    - production

То вижу уже следующую ошибку:

在此输入图像描述

error during connect: Get "http://docker:2375/v1.24/version": dial tcp: lookup docker on 127.0.0.53:53: server misbehaving

Если все команды из deploy я выполняю на сервере в консоли, то контейнер создаётся и всё работает так, как мне и нужно. Здесь же я подозреваю, что проблема в докере, но знаний и опыта не хватает понять причину. Буду благодарен за любую помощь и наводки в решении данной проблемы!

docker
  • 1 个回答
  • 20 Views
Martin Hope
Egor Trutnev
Asked: 2022-06-23 05:38:02 +0000 UTC

如何在 C# 中将字节数组转换为带有光栅或矢量图形的图片?

  • 2

我有一个使用C#用ASP.NET Core编写的项目。目前,使用字节数组创建光栅或矢量图形是一项非常重要的任务。本质如下

有一个字段,尺寸为8x8正方形

在此处输入图像描述

一些方格(其余方格是空的,可以保持不变)包含一个100 x 100像素的网格(即,主字段的一个方格中有10,000 个像素)。

在此处输入图像描述

此类正方形(网格状,即非空)表示为以下类型的数组:

byte[] square27 = new byte[] { 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 1, ... };//Размерность массива 10000 значений

,其中0是空像素,1是一种颜色(例如蓝色)的像素,2是另一种颜色(例如蓝色)的像素。

这个想法是这样的。循环遍历数组的每个元素并绘制所需颜色的点。在输出端,获取使用不同颜色的像素方块构建的光栅或矢量图像。

在输出端,您需要获得一张图像,但能够在不损失质量的情况下放大 4-6 倍,并且将来能够在客户端更改这些颜色......

在此处输入图像描述

网络上...

在此处输入图像描述

问题是,如何在C#中做到这一点?我没有在互联网上找到必要的信息。有没有可以实现这个的库?或者标准库中有一些方法?跨平台工作是非常可取的(但不是必需的)。使用核心。

c#
  • 2 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-11-20 07:55:52 +0000 UTC

jquery 自动完成。如何突出比赛?

  • 0

任务是为下拉菜单制作一个搜索引擎。决定在jquery上实现。我从官网拿了一个现成的例子。

唯一不适合我的是文本中的匹配项没有以粗体突出显示。我更改了代码,以便在 tags 中进行匹配<strong>...</strong>。

有关该问题的更多信息:我需要将与搜索词匹配的字母和数字加粗。例如,我输入asi或avascr,在下拉菜单中,文本应如下所示:分别为 B ASI C 或JavaScr ipt。

但是,标签不会被样式替换。有谁知道如何解决这一问题?


$( function() {
    $.widget( "custom.combobox", {
      _create: function() {
        this.wrapper = $( "<span>" )
          .addClass( "custom-combobox" )
          .insertAfter( this.element );
 
        this.element.hide();
        this._createAutocomplete();
        this._createShowAllButton();
      },
 
      _createAutocomplete: function() {
        var selected = this.element.children( ":selected" ),
          value = selected.val() ? selected.text() : "";
 
        this.input = $( "<input>" )
          .appendTo( this.wrapper )
          .val( value )
          .attr( "title", "" )
          .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" )
          .autocomplete({
            delay: 0,
            minLength: 0,
            source: $.proxy( this, "_source" )
          })
          .tooltip({
            classes: {
              "ui-tooltip": "ui-state-highlight"
            }
          });
 
        this._on( this.input, {
          autocompleteselect: function( event, ui ) {
            ui.item.option.selected = true;
            this._trigger( "select", event, {
              item: ui.item.option
            });
          },
 
          autocompletechange: "_removeIfInvalid"
        });
      },
 
      _createShowAllButton: function() {
        var input = this.input,
          wasOpen = false;
 
        $( "<a>" )
          .attr( "tabIndex", -1 )
          .attr( "title", "Show All Items" )
          .tooltip()
          .appendTo( this.wrapper )
          .button({
            icons: {
              primary: "ui-icon-triangle-1-s"
            },
            text: false
          })
          .removeClass( "ui-corner-all" )
          .addClass( "custom-combobox-toggle ui-corner-right" )
          .on( "mousedown", function() {
            wasOpen = input.autocomplete( "widget" ).is( ":visible" );
          })
          .on( "click", function() {
            input.trigger( "focus" );
 
            // Close if already visible
            if ( wasOpen ) {
              return;
            }
 
            // Pass empty string as value to search for, displaying all results
            input.autocomplete( "search", "" );
          });
      },
 
      _source: function( request, response ) {
        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "gi");
        response( this.element.children( "option" ).map(function() {
            var text = $(this).text().replace(matcher, function(str) {
                return '<strong>' + str + '</strong>'
            });
          if ( this.value && ( !request.term || matcher.test(text) ) )
            return {
              label: text,
              value: text,
              option: this
            };
        }) );
      },
 
      _removeIfInvalid: function( event, ui ) {
 
        // Selected an item, nothing to do
        if ( ui.item ) {
          return;
        }
 
        // Search for a match (case-insensitive)
        var value = this.input.val(),
          valueLowerCase = value.toLowerCase(),
          valid = false;
        this.element.children( "option" ).each(function() {
          if ( $( this ).text().toLowerCase() === valueLowerCase ) {
            this.selected = valid = true;
            return false;
          }
        });
 
        // Found a match, nothing to do
        if ( valid ) {
          return;
        }
 
        // Remove invalid value
        this.input
          .val( "" )
          .attr( "title", value + " didn't match any item" )
          .tooltip( "open" );
        this.element.val( "" );
        this._delay(function() {
          this.input.tooltip( "close" ).attr( "title", "" );
        }, 2500 );
        this.input.autocomplete( "instance" ).term = "";
      },
 
      _destroy: function() {
        this.wrapper.remove();
        this.element.show();
      }
    });
 
    $( "#combobox" ).combobox();
    $( "#toggle" ).on( "click", function() {
      $( "#combobox" ).toggle();
    });
  } );
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  
<div class="ui-widget">
  <label>Your preferred programming language: </label>
  <select id="combobox">
    <option value="">Select one...</option>
    <option value="ActionScript">ActionScript</option>
    <option value="AppleScript">AppleScript</option>
    <option value="Asp">Asp</option>
    <option value="BASIC">BASIC</option>
    <option value="C">C</option>
    <option value="C++">C++</option>
    <option value="Clojure">Clojure</option>
    <option value="COBOL">COBOL</option>
    <option value="ColdFusion">ColdFusion</option>
    <option value="Erlang">Erlang</option>
    <option value="Fortran">Fortran</option>
    <option value="Groovy">Groovy</option>
    <option value="Haskell">Haskell</option>
    <option value="Java">Java</option>
    <option value="JavaScript">JavaScript</option>
    <option value="Lisp">Lisp</option>
    <option value="Perl">Perl</option>
    <option value="PHP">PHP</option>
    <option value="Python">Python</option>
    <option value="Ruby">Ruby</option>
    <option value="Scala">Scala</option>
    <option value="Scheme">Scheme</option>
  </select>
</div>

PS 问题是强' 和粘贴时被转换为文本,而不是标签。所以可以看到源码中文字的外观如下:

<div id="ui-id-123" tabindex="-1" class="ui-menu-item-wrapper">&lt;strong&gt;As&lt;/strong&gt;p</div>

代替

<div id="ui-id-123" tabindex="-1" class="ui-menu-item-wrapper"><strong>As</strong>p</div>

这就是导致问题的原因

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-08-24 16:43:16 +0000 UTC

添加具有相同 ID 的行。JavaScript

  • 2

表中的行数不是固定的。每行有 2 列

在此处输入图像描述

列被分成组。组更改标识符的第一位。每行都有一个唯一的标识符。一组可以有不同数量的行(从 1 到 50)。

您需要实现以下逻辑。在“开始周”列中输入数字(确切地说是数字)时,应从相邻列中提取时间并与一周开始的标识符等于输入的时间的时间相加。

也就是有数据输入

在此处输入图像描述

应接收数据:

1:7

5:5

7:1

9:4

23:6

53:7

如果省略了标识符,则应将其替换为零(即,在示例中 2-4,6,8,10-22,24-52: 0

一周开始时输入的标识符是按顺序排列的。它们从 1 开始,到 200 结束。

我知道我需要创建一个包含 200 个元素的数组,在循环中进行输入检查并使用输入事件。但是,我不知道如何从文本框和标签中获取数字并将它们关联起来,如果一组中的行数几乎在所有地方都不同并且组数不受限制(在示例中有 2 个组,每个其中有 5 行。但是,实际上可能没有 5 行,而是从 1 到 100。同样,有组)。

我不是要你写代码。我需要了解如何关联来自 2 列的信息。javascript 应该如何知道已对其 id 中包含关键字“week”的文本框(输入)进行了输入。

PS输出文本框(输入)看起来像这样

<input name="ctl00$ctl00$MainContent$PPContent$week_1_1" type="text" 
id="MainContent_PPContent_week_1_1" class="week" data-column="1" 
data-row="1" style="width:100%">

一个标签(跨度)

<span id="MainContent_PPContent_time_1_1" class="time" 
 data-columns="1" data-row="1">1</span>
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-08-22 22:19:24 +0000 UTC

如何在 ASP.net 中禁用动态构建的表重建

  • 1
protected void build_table()
{
    ...
    foreach (DataRow row in Stages.Rows)
    {
        for (int j = 0; j < numrows; j++)
        {
            if (MySQL.myData.Length == j) break;
            TableRow tr = new TableRow();
            for (int k = 0; k < numcells; k++)
            {
                if (row_id != Convert.ToInt16(row["ID"]))
                {
                    if (k == 0)
                    {
                        TableHeaderCell thc = new TableHeaderCell();
                        thc.Controls.Add(new LiteralControl(row["ID"].ToString()));
                        tr.Cells.Add(thc);
                    }
                    else if (k == 1)
                    {
                        TableHeaderCell thc = new TableHeaderCell();
                        thc.Controls.Add(new LiteralControl(row["Name"].ToString()));
                        tr.Cells.Add(thc);
                        thc.ColumnSpan = 3;
                    }
                    else
                    {
                        row_id = Convert.ToInt16(row["ID"]);
                        MySQL.Connect("SELECT position, ppe.name FROM pp_existing_stages pes LEFT JOIN pp_events ppe ON pes.id_event = ppe.id WHERE id_plan = (SELECT id FROM pp_plan WHERE pp_information = '" + plan + "') AND id_stage = " + row_id + " ORDER BY position");
                        j--;
                        break;
                    }
                }
                else
                {
                    if (k == 0)
                    {
                        TableCell tc = new TableCell();
                        tc.Controls.Add(new LiteralControl(row_id + "." + MySQL.myData[j].ItemArray[k].ToString()));
                        tr.Cells.Add(tc);
                    }
                    else if (k == 1)
                    {
                        TableCell tc = new TableCell();
                        tc.Controls.Add(new LiteralControl(MySQL.myData[j].ItemArray[k].ToString()));
                        tr.Cells.Add(tc);
                    }
                    else if (k == 2)
                    {
                        TableCell tc = new TableCell();
                        TextBox txt = new TextBox();
                        txt.ID = "price_" + row_id + "_" + MySQL.myData[j].ItemArray[0].ToString();
                        txt.Attributes.Add("style", "width:100%");
                        tc.Controls.Add(txt);
                        tr.Cells.Add(tc);
                    }
                    else if (k == 3)
                    {
                        TableCell tc = new TableCell();
                        TextBox txt = new TextBox();
                        txt.ID = "week_" + row_id + "_" + MySQL.myData[j].ItemArray[0].ToString();
                        txt.Attributes.Add("style", "width:100%");
                        tc.Controls.Add(txt);
                        tr.Cells.Add(tc);
                    }
                }
            }
            Table1.Rows.Add(tr);
        }
    }
}

函数调用

protected void Selection_Change1(Object sender, EventArgs e)
{
    ............
    if(DropDownList1.SelectedIndex != 0)
        build_table();
}

protected void Page_Load(object sender, EventArgs e)
{
    ........            
    var pp_index = HttpUtility.UrlEncode(Request.QueryString["pp_index"]);
    if (!IsPostBack)
        if (!String.IsNullOrEmpty(pp_index))
        {
            DropDownList1.SelectedIndex = Convert.ToInt32(pp_index);
            Selection_Change1(DropDownList1, System.EventArgs.Empty);
        }
    ........
}

形成一个表格:

在此处输入图像描述

表中的每个输入字段都有一个唯一的 id (price_1_1等price_2_3)

用户必须填写这些字段。在表格的底部有一个按钮,当点击时,数据应该被发送到服务器部分并在那里处理。

问题是按下按钮会导致页面重新加载,随后会清除输入的数据。

不使用jQuery是否可以解决问题?如果是这样,怎么做?如果没有,这如何在 jQuery 中实现(一个例子会很有帮助)。

当然可以在按下按钮的那一刻,但在重新加载页面之前获取所有输入的数据。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-08-18 07:11:57 +0000 UTC

从生成的 MySQL 查询中删除重复记录

  • 1

有一个MySQL查询:

SELECT pesp.position, name, pesp.id_plan 
FROM pp_stages pps 
LEFT JOIN pp_ex_stage_position pesp ON pesp.id_stage = pps.id 
ORDER BY id_plan <> 2, IF(position IS NULL,1,0), position

它返回一个排序表:

在此处输入图像描述

需要删除重复的行。同时,你需要保持秩序,去除后续的重复。

结果应该是这样的:

在此处输入图像描述

如何完成查询,使其能够执行此操作?

像这样尝试过,但是查询取消了顺序并删除了不是后续的重复,而是第一个

SELECT * 
FROM (SELECT pesp.position, name, pesp.id_plan 
      FROM pp_stages pps 
      LEFT JOIN pp_ex_stage_position pesp ON pesp.id_stage = pps.id 
      ORDER BY id_plan <> 2, IF(position IS NULL,1,0), position
     ) tbl
GROUP BY tbl.name

在此处输入图像描述

mysql
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-08-01 22:06:31 +0000 UTC

使用 css 的表格单元格的倾斜阴影

  • 5

有必要使用 css 对表格的单元格(单元格)进行倾斜孵化,以便调整单元格大小不会影响单元格之间难看的接缝的外观。

在Excel中实现了类似的东西

在此处输入图像描述

试图这样做

table {
width:400px
}
.hatching-red {
    background: linear-gradient(45deg, rgba(0, 0, 0, 0) 49.9%, red 49.9%, red 60%, rgba(0, 0, 0, 0) 60% ), linear-gradient(45deg, red 10%, rgba(0, 0, 0, 0) 10% );
    background-size: 0.5em 0.5em
}
.hatching-green {
    background: linear-gradient(45deg, rgba(0, 0, 0, 0) 49.9%, green 49.9%, green 60%, rgba(0, 0, 0, 0) 60% ), linear-gradient(45deg, green 10%, rgba(0, 0, 0, 0) 10% );
    background-size: 0.5em 0.5em
}
<table>
   <tr>
    <td class="hatching-red">1</td>
    <td class="hatching-green">2</td>
   </tr> 
</table> 

看起来不错

在此处输入图像描述

但是,在更改比例时,您会注意到线条的曲率和单元格之间的不一致。

在此处输入图像描述

在此处输入图像描述

如何解决这个问题呢?也许有最正确的选择。我会很高兴任何例子。

html
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-07-18 18:46:00 +0000 UTC

wpf 的样式关闭/最小化按钮

  • 9

该应用程序具有标准的最小化和关闭按钮。但他们不适合我。您需要制作自己的按钮。设置任务以制作具有透明背景的按钮。

应该是这样的:

在此处输入图像描述

当光标悬停时,背景颜色和图标发生变化:

在此处输入图像描述

开始做这样的实施:

<Window x:Class="ProgramProject.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ProgramProject"
        mc:Ignorable="d"
        Title="MainWindow" Height="421" Width="425" ResizeMode="NoResize" Background="{x:Null}" WindowStyle="None">
    <Grid>
        <Border CornerRadius="12">
            <Border.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#2e75b6" Offset="0.5" />
                    <GradientStop Color="#1f4e79" Offset="1" />
                </LinearGradientBrush>
            </Border.Background>
        </Border>
        <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="60" Stroke="Black" Opacity="0" VerticalAlignment="Top" Width="425" MouseLeftButtonDown="Rectangle1_PreviewMouseLeftButtonDown">
        <Grid Height="20" Margin="382,10,23,0" VerticalAlignment="Top" MouseDown="Grid1_MouseDown" >
            <Button Opacity="0" Content="" HorizontalAlignment="Left" Margin="-13,-10,-12,-8" VerticalAlignment="Top" Width="45" Height="38"/>
            <Path  Stretch="Fill" Fill="#FFFFFF" Data="F1 M 25.9166,22.1667L 37.9999,33.25L 49.0832,22.1668L 53.8332,26.9168L 42.7499,38L 53.8332,49.0834L 49.0833,53.8334L 37.9999,42.75L 26.9166,53.8334L 22.1666,49.0833L 33.25,38L 22.1667,26.9167L 26.9166,22.1667 Z " Margin="3.5,3.5,3.5,4.5"/>
        </Grid>
    </Grid>
</Window>

但是,由于我是 wpf 的新手,所以我有几个问题:

  1. 有没有比用代码画十字和棍子更简单的方法呢?也许这些按钮已经存在?
  2. 如何一次对 2 个对象执行样式更改?Internet 上有更改悬停按钮背景颜色的示例,但这些示例是悬停在按钮上的。在我的例子中,悬停可以触摸到按钮上的图标,而不是指针将在按钮后面的事实。
  3. 我做得对吗?将按钮和图标放在网格中?

我不希望任何人做出现成的示例(尽管我真的很感激一种实现的简单方法)。对我来说最主要的是被推上正确的道路,解释问题。

wpf
  • 1 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-06-29 01:41:25 +0000 UTC

找到一个控件并更改它。网站

  • 1

面临相当严重的问题。

我使用ListView:

<asp:ListView ID="ListView1" runat="server" GroupPlaceholderID="groupPlaceHolder"
ItemPlaceholderID="itemPlaceHolder"> 
       <LayoutTemplate>
           <table border="1">
              <tr>
                   <th rowspan="3">Текст1</th>
                   <th rowspan="3">Текст2</th>
                   <th id="th_id1" runat="server" colspan="3">Текст4</th>
                   ...
              </tr>
              ...
              <asp:PlaceHolder runat="server" ID="groupPlaceHolder"></asp:PlaceHolder>
              ...
           </table>
       </LayoutTemplate>
       <GroupTemplate>
           <tr>
               <asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
           </tr>
       </GroupTemplate>
       <ItemTemplate>
           <td style="padding:10px">
               <asp:Label ID="lblID" runat="server" CssClass="padding-table" Text='<%# Eval("ID") %>'></asp:Label>
           </td>
           <td style="padding:10px">
               <asp:Label ID="lblName" runat="server" CssClass="padding-table" Text='<%# Eval("Name") %>'></asp:Label>
           </td>
           <td id="th_id9" runat="server" style="padding:10px">
                <asp:Label ID="lblValue" runat="server" CssClass="padding-table" Text='<%# Eval("Value") %>'></asp:Label>
           </td>
           ...
       </ItemTemplate>
    </asp:ListView>

您需要更改属性th_id1和th_id9.

很容易访问th_id1:

var table = (HtmlTableCell)ListView1.FindControl("th_id1") as System.Web.UI.HtmlControls.HtmlTableCell;

但它th_id9无法改变,因为它不仅不是表的一部分,而且还是可扩展的(负责表的内容)。

显然,th_id9在大表中重复的内容,因此每个列单元格都额外分配了一个标识符,该标识符从0cntr增长到表中的最后一个单元格。

在此处输入图像描述

因此,我尝试同时th_id9联系cntr0:

var table = (HtmlTableCell)ListView1.FindControl("th_id9") as System.Web.UI.HtmlControls.HtmlTableCell;
//var table2 = (HtmlTableCell)ListView1.FindControl("ctrl0") as System.Web.UI.HtmlControls.HtmlTableCell;
var table3 = (TableCell)ListView1.FindControl("th_id9") as System.Web.UI.WebControls.TableCell;
//var table14 = (TableCell)ListView1.FindControl("ctrl0") as System.Web.UI.WebControls.TableCell;
var table5 = (TableRow)ListView1.FindControl("th_id9") as System.Web.UI.WebControls.TableRow;
//var table6 = (TableRow)ListView1.FindControl("ctrl0") as System.Web.UI.WebControls.TableRow;
var table17 = (HtmlTableCell)ListView1.FindControl("ctrl0_th_id9") as System.Web.UI.HtmlControls.HtmlTableCell;

使用注释行时出现类型转换错误

在此处输入图像描述

试过ListViewContainer

var table10 = (ListViewContainer)ListView1.FindControl("ctrl0") as System.Web.UI.HtmlControls.ListViewContainer;

但我收到一个错误:

由于其安全级别, “ListViewContainer”不可用。

您如何访问这些元素?

更新:

递归搜索成功地处理了这个任务,但只适用于第一个单元格。如果在循环中完成,它将变为无限

更新 v2.0:

你可以做一个重新分配ID:

table9 = (HtmlTableCell)ListView1.FindControlRecursive("th_id9") as System.Web.UI.HtmlControls.HtmlTableCell;
while(table9 != null)
{
     table9.Visible = false;
     table9.ID = "th_id11";
     table9 = (HtmlTableCell)ListView1.FindControlRecursive("th_id9") as System.Web.UI.HtmlControls.HtmlTableCell;
}
.net
  • 2 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-06-24 03:57:06 +0000 UTC

从类访问文件属性。网络

  • 2

你好!请帮助解决2个问题。

1) 有一个网站页面,其上有asp:Label. 在北部,有对执行处理的类的调用。如何从此类访问属性Text- Label'а?

2)有一个母版页,其中还包含asp:Label。如何Text从子页面的服务器端更改此标签的属性?

假设:使用面向对象的方法并通过get, set. 只是可能这两个问题都需要考虑,这导致需要从类(我退出子页面到的)引用到Label'а位于master-странице. 作为这个领域的初学者,这让我感到害怕。此外,我希望还有其他的互动方式。

更新:

我正在尝试从子页面访问母版页上的元素。

元素:

<asp:Label ID="Access_error" runat="server" Text="test53"></asp:Label>

处理:

Label lbl_TitlePage = Page.Master.FindControl("Access_error") as Label;
lbl_TitlePage.Text = "THE KEY QUESTIONS";

我检查了调试器并看到了lbl_TitlePage = null.

虽然,如果您在调试期间查看 Master 的属性,那么他会完美地看到Label

在此处输入图像描述

c#
  • 2 个回答
  • 10 Views
Martin Hope
Egor Trutnev
Asked: 2020-05-03 20:18:04 +0000 UTC

asp:DropDownList 中更改列表项颜色的问题

  • 1

您需要更改元素中项目的颜色asp:DropDownList。

是不是这样:

if (!IsPostBack)
            for (int i = 0; i < myData.Length; i++)
            {
                DropDownList2.Items.Add(i + 1 + ") " + myData[i].ItemArray[0]);
                DropDownList2.Items[i].Attributes.Add("style", "color:red");
            }

我DropDownList

<asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>

列表的形成没有错误,但文本的颜色没有改变。我做错了什么?

asp.net
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5